【发布时间】:2011-12-27 07:14:43
【问题描述】:
我正在尝试在 android 中实现 java 套接字客户端,而我的服务器是我的笔记本电脑。我希望我的 android 手机通过 java 套接字连接到笔记本电脑。但是我在客户端遇到异常:“SocketException”,它看起来是因为 socket() 调用无法正确创建套接字。下面是我的 android 客户端代码供审查。是否有解决异常的解决方案:
public class SimpleActivityExampleActivity extends Activity {
/** Called when the activity is first created. */
private String usrName;
private String vendorName;
private String message;
public Socket socket;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void submitTheForm(View view) {
final EditText edittext1 = (EditText) findViewById(R.id.editText1);
final EditText edittext2 = (EditText) findViewById(R.id.EditText01);
final EditText edittext3 = (EditText) findViewById(R.id.editText2);
usrName = edittext1.getText().toString();
vendorName = edittext2.getText().toString();
message = edittext3.getText().toString();
message = usrName+ "," + vendorName + "," + message;
byte[] msg = message.getBytes();
try {
InetAddress serverAddr = InetAddress.getByName("192.168.1.2");
Log.d("ClientActivity", "C: Connecting...");
socket = new Socket(serverAddr, 2200);
socket.getOutputStream().write(msg);
socket.getOutputStream().flush();
} catch (UnknownHostException e) {
Toast.makeText(SimpleActivityExampleActivity.this, "unknownhostException", Toast.LENGTH_SHORT).show();
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SocketException e) {
// TODO Auto-generated catch block
Toast.makeText(SimpleActivityExampleActivity.this, "Sockexception", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
//System.out.println("in IOexception for sure");
Toast.makeText(SimpleActivityExampleActivity.this, "IOexception", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
catch (Exception e){
Toast.makeText(SimpleActivityExampleActivity.this, "Exception", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}finally {
if(socket != null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
submitTheForm() 函数在从 main.xml 文件 "android:onClick = "submitTheForm" 中单击按钮时调用
【问题讨论】:
-
能否请您发布与异常相关的堆栈跟踪?