河南做个人网站,手机咋做网站,做彩平图的素材那个网站有,免费公司取名在线文章目录
前言
客户端
服务器端
输出线程端
End
前言 TCP#xff08;Transmission Control Protocol#xff09;是一种面向连接的、可靠的网络传输协议#xff0c;它提供了端到端的数据传输和可靠性保证。 本程序就是基于tcp协议编写而成的。 利用 TCP 协议进行通信的…文章目录
前言
客户端
服务器端
输出线程端
End
前言 TCPTransmission Control Protocol是一种面向连接的、可靠的网络传输协议它提供了端到端的数据传输和可靠性保证。 本程序就是基于tcp协议编写而成的。 利用 TCP 协议进行通信的两个应用程序是有主次之分的一个称为服务器程序另一个称为客户机程序两者的功能和编写方法大不一样。 代码结构图
在这里插入图片描述 客户端
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner; public class Client { public static void main(String[] args) throws IOException { Scanner in new Scanner(System.in); // 发送数据 // 创建 Socket对象 // 创建对象时会连接服务器如果连接不上会报错 // 127.0.0.1 代表本机地址 Socket socket new Socket(127.0.0.1, 11451); MyThread thread new MyThread(); OutputStream os socket.getOutputStream(); while (true) { if (thread.getState() Thread.State.NEW) { thread.setName(芜湖); thread.setSocket(socket); thread.start(); } String str in.next(); os.write(str.getBytes()); if (886.equals(str)) { socket.shutdownOutput(); break; } } System.out.println(主线程退出); in.close(); os.close(); socket.close(); }
} 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 服务器端 import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; public class Server { public static void main(String[] args) throws IOException, InterruptedException { Scanner in new Scanner(System.in); // 接收数据 // 创建ServerSocket对象 ServerSocket ss new ServerSocket(11451); // 获取指定端口的数据 MyThread thread new MyThread(); Socket socket ss.accept();// 监听客户端的连接获取连接 OutputStream os socket.getOutputStream(); // 获取输出流 while (true) { // 判断该线程是否启动 if (thread.getState() Thread.State.NEW) { thread.setName(呀呼); thread.setSocket(socket); thread.start(); } // 从连接通道中获取输出流 // 写出数据 String str in.next(); os.write(str.getBytes()); // 结束 if (886.equals(str)) { socket.shutdownOutput(); break; } } System.out.println(主线程退出); in.close(); os.close(); socket.close(); ss.close(); }
} 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 输出线程端 import java.io.*;
import java.net.Socket;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; public class MyThread extends Thread { Socket socket; public void setSocket(Socket socket) { this.socket socket; } Override public void run() { while (true) { BufferedInputStream isr null; // 获取输出流 try { isr new BufferedInputStream(socket.getInputStream()); int len; byte[] bytes new byte[1024]; while ((len isr.read(bytes)) ! -1) { String target new String(bytes, 0, len); // 获取当前时间 LocalDateTime dateTime LocalDateTime.now(); // get the current date and time // 按照相应格式解析 DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-dd-MM HH:mm:ss); // 输出当前时间 System.out.println(dateTime.format(formatter)); // 输出对方传输的内容 System.out.println(getName()target); } } catch (IOException e) { break; } } System.out.println(getName()输出线程退出); }
} 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
End
此代码我已经测试过可以实现最初的无线数据传输客户端运行在一个电脑上服务器端运行在另一台电脑上这时只需要将客户端的目标ip地址改为服务器端电脑的ip地址如果不知到如何查询winr - cmd-ipconfig就可以看到自己电脑的IPv4 地址。 需要注意的是当时的测试环境是两台电脑处于同一个WiFi热点下进行的。