android开发实例-socket(二)
客户端可以向服务器端发送消息。
服务器端部分代码:
public void getServer() {
try {
server = new ServerSocket(1978); // 实例化Socket对象
ta_info.append("服务器套接字已经创建成功\n"); // 输出信息
while (true) { // 如果套接字是连接状态
ta_info.append("等待客户机的连接......\n"); // 输出信息
socket = server.accept(); // 实例化Socket对象
ta_info.append("连接成功。\n"); // 输出信息
reader = new BufferedReader(new InputStreamReader(socket
.getInputStream())); // 实例化BufferedReader对象
getClientInfo(); // 调用getClientInfo()方法
}
} catch (Exception e) {
e.printStackTrace(); // 输出异常信息
}
}
private void getClientInfo() {
try {
while (true) { // 如果套接字是连接状态
ta_info.append("接收到客户机发送的信息:" + reader.readLine() + "\n"); // 获得客户端信息
}
} catch (Exception e) {
ta_info.append("客户端已退出。\n"); // 输出异常信息
} finally {
try {
if (reader != null) {
reader.close();// 关闭流
}
if (socket != null) {
socket.close(); // 关闭套接字
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
安卓客户端部分代码:
1 Handler handler=new Handler(); 2 handler.post(socketThread); 3 btn.setOnClickListener(new OnClickListener() { 4 5 public void onClick(View v) { 6 pt.println(et.getText()); 7 et.setText(""); 8 9 } 10 }); 11 12 } 13 14 Runnable socketThread = new Runnable() { 15 public void run() { 16 17 try { 18 19 socket=new Socket("192.168.1.100",1978); 20 socket.getOutputStream(); 21 pt=new PrintWriter(socket.getOutputStream(),true); 22 23 Toast.makeText(MainActivity.this, "ok", 3000).show(); 24 } catch (Exception e) { 25 26 // TODO Auto-generated catch block 27 e.printStackTrace(); 28 29 } 30 } 31 };