Java中使用TCP协议的Socket通信
程序员文章站
2022-04-12 22:09:31
使用TCP的Socket通信:基本测试代码:客户端:package tcpsocket;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;/* 客服端: 创建Socket连接服务器(指定IP地址,端口号) 调用Socket的getInputStream()和getOutputStream()方法获取输入输出流 输入流可以读取服务器...
使用TCP协议的Socket通信:
基本测试代码:
客户端:
package tcpsocket;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/*
客服端:
创建Socket连接服务器(指定IP地址,端口号)
调用Socket的getInputStream()和getOutputStream()方法获取输入输出流
输入流可以读取服务器传过来的数据
输出流可以写出数据到服务器
*/
public class Demo1_Client {
public static void main(String[] args) throws Exception {
// 获取服务器的IP地址,端口号
Socket socket = new Socket("127.0.0.1", 9999);
// 获取客服端的输入输出流
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
// 接收服务器发送过来的数据
byte[] bytes = new byte[1024];
int len = in.read(bytes);
System.out.println(new String(bytes, 0, len));
// 向服务器发送数据
out.write("挖掘机哪家强?".getBytes());
// 客服端关闭连接
socket.close();
}
}
服务器端:
package tcpsocket;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
服务器端:
创建ServerSocket(需要指定端口号)
调用ServerSocket的accept()方法接收一个客服端请求,得到一个Socket
调用Socket的getInputStream()和getOutputStream()方法获取和客服端连接的输入输出流
输入流可以获取客户端发送过来的数据
输出流可以发送信息返回客服端
*/
public class Demo1_Server {
public static void main(String[] args) throws Exception {
// 创建服务器
ServerSocket server = new ServerSocket(9999);
while (true) {
// 获取客服端的Socket
Socket clientSocket = server.accept();
// 获取与客服端连接的输入输出流
InputStream in = clientSocket.getInputStream();
OutputStream out = clientSocket.getOutputStream();
// 发送数据到客服端
out.write("百度一下,你就知道!".getBytes());
// 接收客服端发送过来的数据
byte[] bytes = new byte[1024];
int len = in.read(bytes);
System.out.println(new String(bytes, 0, len));
// 断开与此用户的连接
clientSocket.close();
}
}
}
例题:
客户端从键盘输入字符串,提交到服务器。
服务器将此用户发送过来的字符串反转后,返回给用户。
要求服务器用多线程方式接收多个用户的提交。
客户端:
package tcpsocket;
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Demo2_Client {
public static void main(String[] args) throws UnknownHostException, IOException {
Scanner sc = new Scanner(System.in); //创建键盘录入对象
Socket socket = new Socket("127.0.0.1", 11111); //创建客户端,指定ip地址和端口号
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 tcpsocket;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Demo2_Server {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(11111);
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();
}
}
}
本文地址:https://blog.csdn.net/pipizhen_/article/details/107673249
上一篇: JAVA基础(String类)
下一篇: 排序算法之归并排序