了解scoket通信原理,在此基础上用Java编写一个程序
时间: 2024-04-04 12:32:44 浏览: 117
好的,我可以为您解答和提供相关的代码示例。
Socket通信原理:
Socket(套接字)是实现网络通信的基本操作单元之一。它是网络通信过程中端点的抽象表示,包含了IP地址和端口号等信息。
在Socket通信中,通信的双方都需要创建Socket对象。其中,客户端通过创建Socket对象指定要连接的服务器的IP地址和端口号,服务器则通过创建ServerSocket对象监听指定的端口号,等待客户端的连接。
一旦客户端与服务器成功建立连接,就可以通过Socket对象进行数据的发送和接收。
Java实现Socket通信的示例代码:
以下是一个简单的Java Socket通信程序示例,其中包括客户端和服务器端的代码。
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
Socket socket = serverSocket.accept();
System.out.println("客户端已连接,IP地址为:" + socket.getInetAddress().getHostAddress());
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String msg;
while ((msg = reader.readLine()) != null) {
System.out.println("客户端发来消息:" + msg);
writer.write("已收到消息:" + msg);
writer.newLine();
writer.flush();
}
socket.close();
serverSocket.close();
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8888);
System.out.println("已连接服务器,IP地址为:" + socket.getInetAddress().getHostAddress());
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String msg;
while ((msg = reader.readLine()) != null) {
writer.write(msg);
writer.newLine();
writer.flush();
BufferedReader reader2 = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String reply = reader2.readLine();
System.out.println("服务器回复:" + reply);
}
socket.close();
}
}
```
以上代码实现了简单的Socket通信,其中服务器端监听本地的8888端口,客户端连接到该端口,并向服务器发送消息。服务器端接收消息后回复客户端,并继续等待新的消息。客户端输入消息后发送给服务器,并等待服务器回复。
阅读全文