A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fmi110 高级黑马   /  2015-8-12 14:46  /  459 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

网络编程
  1. /*
  2. TCP:客户端(Client)首先与服务端(Server)建立连接,形成通道(即IO流),
  3. 然后数据可以在通道之间进行传输,并且单个Server端可以同时与多个Client通信

  4.         Socket:建立客户端
  5.         ServerSocket:建立服务器端

  6. TCP客户端:客户端需要明确服务器端的ip地址和端口号,才能尝试建立连接,如果连接失败,
  7.         会出现异常。
  8.         连接成功,则通道Socket建立,可以通过IO流,进行数据传输,Socket提供了输入和输出流,
  9.         可通过方法 getInputStream()   getOutputStream()获取
  10.        
  11.         与服务器通讯结束后,要关闭Socket

  12. TCP服务器端:
  13.         服务器需要明确它所接收的数据是从哪个端口进入的。
  14.         当有客户端访问是,要明确是哪个客户端,可通过 accept()获取已连接的客户端对象,并
  15.         通过该对象与客户端通过IO流进行数据数据传输。

  16.         当该客户端访问结束,关闭该客户端。
  17.        
  18.        
  19. */

  20. /*练习:TCP通讯演示,客户端发送消息,服务器收到消息后,回复一条消息*/

  21. import java.io.*;
  22. import java.net.*;


  23. class  ClientDemo
  24. {
  25.         public static void main(String[] args) throws Exception
  26.         {
  27.                 //1 建立Soket,连接服务器地址和端口
  28.                 Socket socket = new Socket("192.168.31.1",10002);
  29. //                Socket socket = new Socket(InetAddress.getByName("192.168.31.1"),10002);
  30.                
  31.                 //2 获取Socket输出流
  32.                 OutputStream out = socket.getOutputStream();

  33.                 //3 使用输出流 将指定数据写出去
  34.                         //与UDP不同,发送的数据不需要封装到包中
  35.                 out.write("Hello TCP!!".getBytes());
  36.                 out.flush(); //刷新数据流

  37.                 //4 获取Socket输入流,接收返回想信息
  38.                 InputStream in = socket.getInputStream();
  39.                 byte[] bufin = new byte[1024];
  40.                
  41.                 int len = in.read(bufin);//获取返回数据长度

  42.                 String msg = new String(bufin,0,len);
  43.                 String ip = socket.getInetAddress().getHostName();
  44.                 String name = socket.getInetAddress().getHostAddress();
  45.                 System.out.println(ip+":"+msg);

  46.                 //5 关闭连接
  47.                 socket.close();
  48.         }
  49. }

  50. class ServerDemo
  51. {
  52.         public static void main(String[] a) throws Exception
  53.         {
  54.                 //1 建立ServerSocket,获取客户端的连接
  55.                 ServerSocket ss = new ServerSocket(10002);//需要明确监听端口
  56.                
  57.                 //2 获取Socket 的IO 流
  58.                 Socket s = ss.accept();
  59.                 InputStream in = s.getInputStream();
  60.                 OutputStream out = s.getOutputStream();


  61.                 //3 接收客户端信息
  62.                 byte[] buf = new byte[1024];
  63.                 int len = in.read(buf);
  64.                 String msg = new String(buf,0,len);
  65.                
  66.                  //获取客户端地址
  67.                 String ip = s.getInetAddress().getHostAddress();
  68.                 System.out.println("Client::"+ip+"::"+msg);

  69.                 //4 回复消息
  70.                 out.write("消息收到!!".getBytes());
  71.                 out.flush();
  72.                 //5 关闭连接
  73.                 s.close();
  74.         }
  75. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马