socket单用户通信

服务器端:

package socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class socketServer {

private ServerSocket socketServer = null;
private Socket server = null;
private int port; //通信要用的端口
private InputStream is = null;
private OutputStream os = null;
private BufferedReader br =null;
private PrintWriter pw = null;

/*
* 通信入口.定义端口
*/
public void Server(int port) throws IOException {
this.port = port;
Server();
}
/*
* 从键盘输入数据
*/
public String SystemIn() throws IOException {
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(System.in));
return br.readLine();
}
/*
* 服务器端通信
*/
private void Server() throws IOException {
// 创建服务器socket
this.socketServer = new ServerSocket(this.port);
// 监听端口.接收请求后返回socket
this.server = socketServer.accept();
// System.out.println("接受客户端请求,并建立连接");

is = server.getInputStream();
os = server.getOutputStream();
br = new BufferedReader(new InputStreamReader(is));
pw = new PrintWriter(new OutputStreamWriter(os));

while(true) {
String value = br.readLine();
print(value);
if(value.equals("88")) {
pw.println("88");
pw.flush();
break;
}
pw.println(SystemIn());
pw.flush();
}

}
/*
* 关闭流和服务器socket
*/
public void close() throws IOException {
if(is != null) {
if(br != null) {
br.close();
}
is.close();
}
if(os != null) {
if(pw != null) {
pw.close();
}
os.close();
}
if(server != null) {
if(socketServer != null) {
socketServer.close();
}
server.close();
}
}

private void print(String value) {
System.out.println(value);
}
public static void main(String [] args) throws IOException {
socketServer server = new socketServer();
server.Server(1000);
server.close();
}
}


客户端:
package socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

public class socketClient {

private Socket client = null;
private int port; // 定义通信端口
private InputStream is = null;
private OutputStream os = null;
private BufferedReader br =null;
private PrintWriter pw = null;

/*
* 通信入口.定义端口
*/
public void Client(int port) throws IOException {
this.port = port;
Client();
}
/*
* 从键盘输入数据
*/
public String SystemIn() throws IOException {
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(System.in));
return br.readLine();
}
/*
* 客户端通信
*/
private void Client() throws IOException {
// 创建socket对象,指定连接本机端口8888
this.client = new Socket("127.0.0.1", this.port);
System.out.println("已连接服务器");
is = client.getInputStream();
os = client.getOutputStream();
br = new BufferedReader(new InputStreamReader(is));
pw = new PrintWriter(new OutputStreamWriter(os));
while(true) {
pw.println(SystemIn());
pw.flush();

String value = br.readLine();
print(value);
if(value.equals("88")) {
pw.println("88");
pw.flush();
break;
}
}

}
/*
* 关闭流和客户端socket
*/
public void close() throws IOException {
if(is != null) {
if(br != null) {
br.close();
}
is.close();
}
if(os != null) {
if(pw != null) {
pw.close();
}
os.close();
}

if(client != null) {
client.close();
}
}

private void print(String value) {
System.out.println(value);
}
public static void main(String [] args) throws IOException {
socketClient client = new socketClient();
client.Client(1000);
client.close();

}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要进行用户注册的话,您可以使用Socket通信与服务器进行交互。以下是一个基本的示例,演示了如何在客户端和服务器之间完成用户注册的过程: 在客户端(Python): ```python import socket def register_user(username, password): # 创建一个TCP/IP socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 服务器的主机名和端口号 server_address = ('localhost', 12345) try: # 连接到服务器 client_socket.connect(server_address) # 发送注册请求 message = f"REGISTER {username} {password}" client_socket.sendall(message.encode()) # 接收服务器的响应 response = client_socket.recv(1024).decode() print(response) finally: # 关闭连接 client_socket.close() # 调用注册函数 register_user("Alice", "123456") ``` 在服务器端(Python): ```python import socket def handle_client(client_socket): # 接收客户端发送的请求 request = client_socket.recv(1024).decode() print(request) # 解析请求 if request.startswith("REGISTER"): parts = request.split(" ") if len(parts) == 3: username = parts[1] password = parts[2] # 在这里执行用户注册逻辑,例如将用户信息写入数据库 # 响应客户端 response = "Registration successful" client_socket.sendall(response.encode()) else: response = "Invalid request" client_socket.sendall(response.encode()) else: response = "Invalid request" client_socket.sendall(response.encode()) def start_server(): # 创建一个TCP/IP socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 服务器的主机名和端口号 server_address = ('localhost', 12345) # 绑定服务器地址 server_socket.bind(server_address) # 设置监听队列的最大长度 server_socket.listen(1) print("Server started. Waiting for connections...") while True: # 等待客户端连接 client_socket, client_address = server_socket.accept() print(f"Client connected: {client_address}") # 处理客户端请求 handle_client(client_socket) # 关闭客户端连接 client_socket.close() # 启动服务器 start_server() ``` 这只是一个简的示例,您可以根据实际需求扩展功能和处理错误情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值