作者:克乄浪木守 | 来源:互联网 | 2023-06-13 10:23
1:网络7层和tcpip5层tcp协议;三次握手四次挥手使用字节流进行信息交互2:IP和端口ip:计算机在网络里面的唯一标识?端口:程序在电脑里面的唯一标识3:socket编程In
1:网络7层和tcp/ip5层
tcp协议; 三次握手 四次挥手 使用字节流进行信息交互
2:IP和端口
ip: 计算机在网络里面的唯一标识
? 端口: 程序在电脑里面的唯一标识
3: socket编程
InetAddress(ip和域名对象)
1 InetAddress[] addrs = InetAddress.getAllByName("www.baidu.com");
2
3 if (addrs != null && addrs.length > 0) {
4
5 for (InetAddress addr : addrs) {
6
7 System.out.println("--->" + addr.getHostAddress());
8
9 }
10
11 }
客户端 服务端 模型图
案例:完成客户端发送消息给服务端,并且服务端回答消息给客户端
服务器端:
1 package com.lv.study.pm.socket2;
2
3 import java.io.BufferedReader;
4 import java.io.BufferedWriter;
5 import java.io.IOException;
6 import java.io.InputStream;
7 import java.io.InputStreamReader;
8 import java.io.OutputStream;
9 import java.io.OutputStreamWriter;
10 import java.net.ServerSocket;
11 import java.net.Socket;
12
13 public class DemoServer {
14
15 public static void main(String[] args) {
16
17
18 try {
19 //1:新建一个服务端对象
20 ServerSocket serverSocket=new ServerSocket(8888);
21
22 System.out.println("i am server , start server......");
23
24 //2:等待客服端连接,开始监听
25 //如果有连接;将会得到客服端的连接(socket)
26 Socket server= serverSocket.accept();
27
28 //3:向客服端发送信息
29 OutputStream os=server.getOutputStream();
30
31 //3.1 将字节流包装成字符流进行操作
32 BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os));
33
34 //3.2 发送信息 记得加上\n【为了方便读取】
35 String msg="hello,Najing,you ip:"+server.getInetAddress().getHostAddress()+"\n";
36 bw.write(msg);
37 bw.flush();//不然对方接收不了 这里不能用close
38
39 //4 接收客服端发给我的信息
40 InputStream is=server.getInputStream();
41
42 //4.1 将字节流变成字符流来操作
43 BufferedReader br=new BufferedReader(new InputStreamReader(is));
44
45 //4.2 信息读取
46 String readLine =br.readLine();
47 System.out.println(readLine);
48
49
50 } catch (IOException e) {
51 e.printStackTrace();
52 }
53
54 }
55
56 }
客服端:
1 package com.lv.study.pm.socket2;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.io.OutputStream;
8 import java.net.Socket;
9 import java.net.UnknownHostException;
10
11 public class DemoClient {
12
13 public static void main(String[] args) {
14
15 //1:新建一个socket对象 根据ip和端口
16 String ip="127.0.0.1";
17 int port=8888;
18 try {
19 Socket client=new Socket(ip,port);
20
21 //2 接收服务器发过来的消息
22 InputStream is=client.getInputStream();
23
24 //2.1转成字符流
25 BufferedReader br=new BufferedReader(new InputStreamReader(is));
26 String r1=br.readLine();
27 System.out.println("服务器发来的消息"+r1);
28
29 //3向服务器发送消息
30 OutputStream os=client.getOutputStream();
31 String msg="hello Nanjing,i am client \n";//\n代表读取的时候readline能读到
32 os.write(msg.getBytes());
33 os.flush();//如果不清空会有问题
34
35
36 } catch (UnknownHostException e) {
37 e.printStackTrace();
38 } catch (IOException e) {
39 e.printStackTrace();
40 }
41
42 }
43
44 }
结果: