Socket实现服务端与客户端通信
程序员文章站
2022-06-06 08:29:23
...
服务端与客户端都要实现简单接收与发送
1.建立线程用于接收数据
package socket.chat;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class ReceiveThread extends Thread{
private Socket socket;
public ReceiveThread(Socket socket) {
this.socket=socket;
}
public void run() {
try {
InputStream inputStream=socket.getInputStream();
DataInputStream dataInputStream=new DataInputStream(inputStream);
while(true) {
String message=dataInputStream.readUTF();
System.out.println("接收:"+message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.建立线程用于发送数据
package socket.chat;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class SendThread extends Thread{
private Socket socket;
public SendThread(Socket socket) {
this.socket=socket;
}
public void run() {
try {
OutputStream outputStream=socket.getOutputStream();
DataOutputStream dataOutputStream=new DataOutputStream(outputStream);
while(true) {
Scanner scanner=new Scanner(System.in);
String str=scanner.next();
dataOutputStream.writeUTF(str);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.建立服务端开启以上两个线程
package socket.chat;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket=new ServerSocket(8889);
System.out.println("打开8889端口");
Socket socket=serverSocket.accept();
// 启动发送消息线程
new SendThread(socket).start();
// 启动接收消息线程
new ReceiveThread(socket).start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
4.建立客户端开启以上两个线程
package socket.chat;
import java.io.IOException;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
Socket socket=new Socket("127.0.0.1", 8889);
System.out.println("客户端建立socket"+socket.toString());
// 启动发送消息线程
new SendThread(socket).start();
// 启动接收消息线程
new ReceiveThread(socket).start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
完~
推荐阅读
-
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
-
python实现socket客户端和服务端简单示例
-
Python基于socket模块实现UDP通信功能示例
-
Python网络编程使用select实现socket全双工异步通信功能示例
-
.NET客户端实现Redis中的管道(PipeLine)与事物(Transactions)
-
python3利用Socket实现通信的方法示例
-
Java实现的基于socket通信的实例代码
-
Python通过websocket与js客户端通信示例分析
-
Android开发使用json实现服务器与客户端数据的交互功能示例
-
C#使用Socket实现服务器与多个客户端通信(简单的聊天系统)