黑马程序员技术交流社区

标题: TCP客户端和服务器端代码实现 [打印本页]

作者: 唯我独赞mo    时间: 2015-11-16 20:16
标题: TCP客户端和服务器端代码实现
客户端思路:
    1:建立客户端的Socket服务,并明确要连接的服务器。
    2:如果连接建立成功,就表明,已经建立了数据传输的通道.就可以在该通道通过IO进行数据的读取和写入.该通道称为Socket流,Socket流中既有    读取流,也有写入流.
    3:通过Socket对象的方法,可以获取这两个流
    4:通过流的对象可以对数据进行传输
    5:如果传输数据完毕,关闭资源
代码实现:
  1. import java.io.IOException;
  2. import java.io.OutputStream;
  3. import java.net.InetAddress;
  4. import java.net.Socket;
  5. import java.net.UnknownHostException;

  6. /*
  7. * TCP协议发送数据:
  8. * A:创建发送端的Socket对象
  9. *                 这一步如果成功,就说明连接已经建立成功了。
  10. * B:获取输出流,写数据
  11. * C:释放资源
  12. *
  13. * 连接被拒绝。TCP协议一定要先看服务器。
  14. * java.net.ConnectException: Connection refused: connect
  15. */
  16. public class ClientDemo {
  17.         public static void main(String[] args) throws IOException {
  18.                 // 创建发送端的Socket对象
  19.                 // Socket(InetAddress address, int port)
  20.                 // Socket(String host, int port)
  21.                 //Socket s = new Socket(InetAddress.getByName("192.168.12.92"),8888);
  22.                 Socket s = new Socket("192.168.0.116",8888);
  23.                 //获取写入流,写数据
  24.                 // public OutputStream getOutputStream()
  25.                 OutputStream os = s.getOutputStream();
  26.                 os.write("hello,tcp,我来了".getBytes());
  27.                 //释放资源
  28.                 s.close();
  29.         }
  30. }
复制代码

服务器端思路:
    1:建立服务器端的socket服务,需要一个端口
    2:服务端没有直接流的操作,而是通过accept方法获取客户端对象,在通过获取到的客户端对象的流和客户端进行通信
    3:通过客户端的获取流对象的方法,读取数据或者写入数据
    4:如果服务完成,需要关闭客户端,然后关闭服务器,但是,一般会关闭客户端,不会关闭服务器,因为服务端是一直提供服务的
代码实现:
  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.net.ServerSocket;
  4. import java.net.Socket;

  5. /*
  6. * TCP协议接收数据:
  7. * A:创建接收端的Socket对象
  8. * B:监听客户端连接。返回一个对应的Socket对象
  9. * C:获取输入流,读取数据显示在控制台
  10. * D:释放资源
  11. */
  12. public class ServerDemo {
  13.         public static void main(String[] args) throws IOException {
  14.                 //创建接收端的Socket对象
  15.                 //ServerSocket(int port)
  16.                 ServerSocket ss = new ServerSocket(8888);
  17.                 //监听客户端连结,返回一个对应的Socket对象
  18.                 // public Socket accept()
  19.                 Socket s = ss.accept();//侦听并接收到次套接字的连结,此方法在连接传入之前以知阻塞
  20.                 // 获取输入流,读取数据显示在控制台
  21.                 InputStream is = s.getInputStream();
  22.                 byte[] bys = new byte[1024];
  23.                 int len = is.read(bys);//阻塞式方法
  24.                 String str = new String(bys,0,len);
  25.                 String ip = s.getInetAddress().getHostAddress();
  26.                 System.out.println(ip+"----"+str);
  27.                 //释放资源
  28.                 s.close();
  29.                 // ss.close(); //这个不应该关闭
  30.         }
  31. }
复制代码

作者: jingyezhige    时间: 2015-11-17 21:16
学习学习
作者: z13561291    时间: 2015-11-17 21:23
还没学到IO 先简单看下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2