掌握网络通信中UDP协议的编程原理。掌握UDP网络通信DatagramPacket和DatagramSocket的使用。掌握网络通信中TCP协议的编程原理。掌握TCP网络通信ServerSocket和Socket的使用。
编写一个小程序。实现客户端向服务器传递一个字符串(键盘录入) ,服务器(多线程)将字符串反转后写回,客户端再次接读取到的是反转后的字符串。要求使用多线程与TCP通信相关知识实现。代码如下:
package main;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class client {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
Socket socket = new Socket("169.254.58.77", 8954);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintStream ps = new PrintStream(socket.getOutputStream());
ps.println(sc.nextLine());
System.out.println(br.readLine());
socket.close();
}
}
package main;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class server {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8954);
System.out.println("服务器启动,绑定端口8954");
while (true) {
final Socket socket = server.accept();
new Thread() {
public void run() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintStream ps = new PrintStream(socket.getOutputStream());
String line = br.readLine();
line = new StringBuilder(line).reverse().toString();
ps.println(line);
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
}
}
结果截图:
主要内容
-
- 技术要点分析
使用了UDP网络编程的DatagramPacket类,DatagramSocket类,TCP网络编程的ServerSocket类,Socket类。
-
- 基本原理总结
Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上的数据的传递。Socket原理机制是通信的两端都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。写此程序一定要加上异常检测。