使用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 }