Java TCP使用Socket进行网络通信(3)

作者 : 卿笃军

原文地址:http://blog.csdn.net/qingdujun/article/details/39322051

 

本文演示,TCP使用Socket进行网络通信,建立简单的客户端,并使用客户端给服务器发送一条消息,服务端接收到后,将数据打印在控制台上。

1)客户端,发送一个消息给服务端。

2)服务端,接收到客户端的消息,并打印在控制台上。

 

客户端,代码如下:

  1. package tcp.clinet.qdj;  
  2.   
  3. import java.io.OutputStream;  
  4. import java.net.Socket;  
  5. //Tcp通信之客户端  
  6. public class CTcpClient {  
  7.   
  8.     public static void main(String[] args) throws Exception {  
  9.         //创建客户端的Socket服务,指定目的主机和端口。  
  10.         Socket s = new Socket("127.0.0.1",6877);  
  11.         System.out.println("客户端已建立链接...");  
  12.         //为了发送数据,应该获取Socket流中的输出流。  
  13.         OutputStream out = s.getOutputStream();  
  14.         out.write("Tcp数据来了...".getBytes());  
  15.         //关闭资源  
  16.         s.close();  
  17.     }  
  18. }  

服务端,代码如下:

  1. package tcp.server.qdj;  
  2.   
  3. import java.io.InputStream;  
  4. import java.net.ServerSocket;  
  5. import java.net.Socket;  
  6.   
  7. //Tcp通信之服务端  
  8. public class CServer {  
  9.   
  10.     public static void main(String[] args) throws Exception{  
  11.         //建立服务端socket服务,并监听一个端口。  
  12.         ServerSocket ss = new ServerSocket(6877);  
  13.         //通过accept方法获取链接过来的客户端对象  
  14.         System.out.println("服务器已启动,正在监听6876端口,等待数据...");  
  15.         Socket s = ss.accept();  
  16.         //获得ip地址  
  17.         String ip = s.getInetAddress().getHostAddress();  
  18.         System.out.println(ip+"....connected");  
  19.         //获取客户端发送过来的数据,那么要使用客户端的对象的读取流来读取数据  
  20.         InputStream in = s.getInputStream();  
  21.         byte[] buf = new byte[1024];  
  22.         int len = in.read(buf);  
  23.         System.out.println(new String(buf,0,len));  
  24.         //关闭客户端  
  25.         s.close();  
  26.         //关闭服务端(可选)  
  27.         ss.close();  
  28.     }  
  29. }  

本文需要注意的是,Tcp是面向连接的数据传送,所以需要先启动服务器端,然后再开启客户端,才能成功连接.....

另外我在编写的时候,将ip地址填写为自己的实际网络ip地址,出现什么数据都接受不到的情况。换成127.0.0.1就没问题,待解决。

效果展示:

1)启动服务端

2)启动客户端,发送数据

3)服务器端,收据接受后...

 

参考文献:Java视频 毕向东 主讲

原文地址:http://blog.csdn.net/qingdujun/article/details/39322051

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。