Java使用Sockt进行通信(2)

使用TCP协议编写Sockt

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的

具体代码:

服务端:
*端口号可以自定义

 1 package cn.socket2;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.InputStreamReader;
 5 import java.io.OutputStream;
 6 import java.net.ServerSocket;
 7 import java.net.Socket;
 8 
 9 public class SeviceSocpt {
10     /*
11      *       服务端发送信息,接收信息
12      */
13     public static void main(String[] args) throws Exception {
14 
15                 //1.创建对象
16                 ServerSocket sk=new ServerSocket(11111);
17                 //2.监听
18                 Socket s=sk.accept();
19                 //打包数据
20                 BufferedReader br=new BufferedReader(new 
21                                   InputStreamReader(s.getInputStream()));    
22                 BufferedReader bw=new BufferedReader(new 
23                                      InputStreamReader(System.in));
24                 OutputStream os=s.getOutputStream();
25                 String line=null;
26                 //使用循环可多次发送信息
27                 while((line=br.readLine())!=null){
28                     System.out.println("Client 	"+line);        
29                     
30                     os.write(bw.readLine().getBytes());
31                 }            
32                 //释放资源
33                 s.close();
34 
35     }
36 
37 }

客户端:

 1 package cn.socket2;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.BufferedWriter;
 5 import java.io.InputStream;
 6 import java.io.InputStreamReader;
 7 import java.io.OutputStreamWriter;
 8 import java.net.Socket;
 9 
10 public class ClientSocket {
11 /*
12  *       客户端发送信息,接收信息
13  */
14     public static void main(String[] args) throws Exception {
15         //创建Socket对象 并写入IP地址及端口号
16         Socket sk=new Socket("192.168.60.218",11111);
17         //使用IO流读取数据和写入数据
18         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
19         BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));
20         String line=null;
21         //使用循环使用循环可多次发送信息
22         while((line=br.readLine())!=null){            
23             bw.write(line);
24             bw.newLine();
25             bw.flush();
26             
27             InputStream is=sk.getInputStream();            
28             byte [] by=new byte[1024];
29             int num=is.read(by);
30             String h=new String(by, 0, num);
31             System.out.println("Service:	"+h);
32         }    
33         //释放资源
34                    br.close();
35                     bw.close();
36            sk.close();
37 
38     }
39 
40 }
原文地址:https://www.cnblogs.com/luoxionghenku/p/8686779.html