本文介绍SOCKET 的服务端和客户端的开发,在本文中并没有使用异步来对数据进行接收。因为网上太多有关异步、存储客户端SOCKET的例子了,但是他们的代码都非常的多,非常的繁琐,所以这里就去掉了异步数据接收等。
首先介绍服务端:这里代码实现的是服务端打开后就等待客户端的连接,当客户端连接上后就接收消息,并发消息回去后马上关闭链接。
如果需要做类是聊天室软件的话需要加上“异步处理”
1.public class SocketServer
2.{
3. private ServerSocket mServerSocket;
4. private static final int SERVER_PORT = 6000; //端口
5. public SocketServer()
6. {
7. }
8. public boolean startServer()
9. {
10. boolean bRet = false;
11. try
12. {
13. //创建一个SOCKET 服务器
14. mServerSocket = new ServerSocket(SERVER_PORT);
15. bRet = true;
16. } catch (Exception e)
17. {
18. // TODO: handle exception
19. }
20. return bRet;
21. }
22.
23. public void recv()
24. {
25. try
26. {
27. Socket socket = mServerSocket.accept();
28. //拿到客户端的输入输出(读取,发送)
29. InputStream is = socket.getInputStream();
30. PrintWriter pw = new PrintWriter(socket.getOutputStream());
31. //这里读取客户端第一次发来的消息调试来看吧
32. byte buffer[] = new byte[1024];
33. int reCount = is.read(buffer);
34. String msgString = EncodingUtils.getString(buffer, "GB2312");
35.
36. //我们发回一个"aa"给客户端
37. pw.print("aa");
38. pw.flush();
39. //关掉这个连接
40. socket.close();
41. } catch (Exception e)
42. {
43. // TODO: handle exception
44. }
45. }
46.
47. public void close()
48. {
49. try
50. {
51. mServerSocket.close();
52. } catch (Exception e)
53. {
54. // TODO: handle exception
55. }
56. }
57.}
复制代码
客户端:
1.public class SocketClient
2.{
3. private Socket socket;
4. private InputStream mInputStream;
5. private PrintWriter mPrintWriter;
6. private static final String SERVER_IP = "192.168.1.24";
7. private static final int SERVER_PORT = 6000;
8.
9. public SocketClient()
10. {
11. }
12.
13. public boolean connection()
14. {
15. boolean bRet = false;
16. try
17. {
18. //创建一个客户端连接
19. InetAddress ia = InetAddress.getByName(SERVER_IP);
20. socket = new Socket(ia, SERVER_PORT);
21.
22. //获取这个客户端连接SOCKET的输入输出
23. mPrintWriter = new PrintWriter(socket.getOutputStream(), true);
24. mInputStream = socket.getInputStream();
25. bRet = true;
26. } catch (Exception e)
27. {
28. // TODO: handle exception
29. }
30. return bRet;
31. }
32. //发送消息
33. public void sendMsg(String msg)
34. {
35. mPrintWriter.print(msg);
36. mPrintWriter.flush();
37. }
38. //读取消息
39. public String readMsg()
40. {
41. String msgString = "";
42. try
43. {
44. byte buffer[] = new byte[1024];
45. int reCount = mInputStream.read(buffer);
46. msgString = EncodingUtils.getString(buffer, "GB2312");
47. } catch (Exception e)
48. {
49. // TODO: handle exception
50. }
51.
52. return msgString;
53. }
54.
55.
56. public void close()
57. {
58. try
59. {
60. socket.close();
61. } catch (Exception e)
62. {
63. // TODO: handle exception
64. }
65. }
66.}
复制代码
主:
1.private android.view.View.OnClickListener btnClickListener = new
android.view.View.OnClickListener()
2. {
3.
4. @Override
5. public void onClick(View v)
6. {
7. int id = v.getId();
8. switch (id)
9. {
10. case R.id.btn:
11. {
12. SocketClient socketClient = new SocketClient();
13. socketClient.connection();
14. socketClient.sendMsg("123");
15. socketClient.sendMsg("123");
16. socketClient.sendMsg("123");
17. socketClient.sendMsg("123");
18. String r = socketClient.readMsg();
19. socketClient.close();
20. Toast.makeText(SocketActivity.this, r, Toast.LENGTH_LONG).show();
21. }
22. break;
23. case R.id.btn_server:
24. {
25. SocketServer socketServer = new SocketServer();
26. socketServer.startServer();
27. socketServer.recv();
28. socketServer.close();
29. }
30. break;
31. default:
32. break;
33. }
34. }
35. }
复制代码