Java——实现客服端和服务器计算

本文介绍了如何使用Java进行网络编程,通过ServerSocket建立服务器端,监听客户端的连接请求,接收并处理计算表达式,然后将结果返回给客户端。客户端则通过Socket与服务器建立连接,发送计算表达式,并接收服务器的计算结果。对于深入理解Java TCP/UDP Socket网络编程,可参考给出的链接。
摘要由CSDN通过智能技术生成
这次看到以前对Socket网络编程有点弱,看完一些资料、各位网友对网络编程的相关学习,
接下来我来展示一个简单的Socket网络编程——客服端向服务器发送计算表达式及服务器发送计算结果。
客服端与服务器之间的相关处理步骤分为:

Server端所要做的事情主要是建立一个通信的端点,然后等待客户端发送的请求。典型的处理步骤如下:
1. 构建一个ServerSocket实例,指定本地的端口。这个socket就是用来监听指定端口的连接请求的。
2. 调用socket的accept()方法来获得下面客户端的连接请求。通过accept()方法返回的socket实例,建立了一个和客户端的新连接。
3.首先通过DataInputStream 读取 客服端把控制台输入的计算表达式发送到服务器的数据,这是以字符串的形式发送过来的。
4.处理数据,通过String.split(“\+”) 进行相关的算木切割识别,通过类型转化。
5.通过DataOutputStream 发送计算的结果到客服端

package serverCaculClient;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;

public class Server {
        // 服务器对象
        private static ServerSocket serverSocket;

        public static String split(String str){
            String[] s;
            if((s=str.split("\\+")).length>1) return String.valueOf(Inte
好的,下面是 Python Socket 实现 FTP 客户服务器的基本流程: FTP 服务器: 1. 导入 socket 模块和 os 模块。 2. 创建一个 TCP Socket 对象,并绑定到一个 IP 地址和口号上。 3. 调用 socket 对象的 listen() 方法,开始监听客户连接请求。 4. 服务器通过无限循环不断接受客户连接请求。当有客户连接请求时,服务器通过 accept() 方法接受客户的连接请求,并返回一个新的 socket 对象和客户的地址。 5. 服务器收到客户的请求后,根据请求的类型进行相应的处理,比如上传文件、下载文件、获取文件列表等。 6. 服务器处理完客户的请求后,通过 send() 方法向客户发送响应数据。 FTP 客户: 1. 导入 socket 模块和 os 模块。 2. 创建一个 TCP Socket 对象,并连接到 FTP 服务器的 IP 地址和口号上。 3. 客户服务器发送请求数据,比如上传文件、下载文件、获取文件列表等。 4. 客户通过 recv() 方法接收服务器的响应数据。 5. 客户处理服务器返回的响应数据,比如显示文件列表、保存下载的文件等。 下面是一个简单的 FTP 服务器和客户的示例代码: FTP 服务器代码: ``` import socket import os # 设置服务器IP地址和口号 HOST = '127.0.0.1' PORT = 8888 # 创建TCP Socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定IP地址和口号 server_socket.bind((HOST, PORT)) # 开始监听客户连接请求 server_socket.listen(5) print('FTP server is running...') while True: # 接受客户连接请求 client_socket, client_address = server_socket.accept() print('Connected by', client_address) # 接受客户请求数据 request_data = client_socket.recv(1024).decode('utf-8') # 处理客户请求 if request_data.startswith('get'): # 获取文件名 filename = request_data.split()[1] # 判断文件是否存在 if os.path.exists(filename): # 打开文件并读取文件内容 with open(filename, 'rb') as f: file_data = f.read() # 向客户发送文件数据 client_socket.sendall(file_data) print('File sent successfully!') else: # 如果文件不存在,向客户发送错误信息 error_msg = 'File not found!' client_socket.sendall(error_msg.encode('utf-8')) print(error_msg) elif request_data.startswith('put'): # 获取文件名 filename = request_data.split()[1] # 接收客户发送的文件数据 file_data = client_socket.recv(1024) # 保存文件到服务器本地 with open(filename, 'wb') as f: f.write(file_data) print('File received successfully!') elif request_data == 'list': # 获取文件列表 file_list = os.listdir() # 将文件列表转换为字符串 file_list_str = '\n'.join(file_list) # 向客户发送文件列表 client_socket.sendall(file_list_str.encode('utf-8')) print('File list sent successfully!') # 关闭客户连接 client_socket.close() # 关闭服务器Socket连接 server_socket.close() ``` FTP 客户代码: ``` import socket import os # 设置服务器IP地址和口号 HOST = '127.0.0.1' PORT = 8888 # 创建TCP Socket对象 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接到服务器 client_socket.connect((HOST, PORT)) while True: # 获取用户输入的命令 cmd = input('ftp> ') # 发送命令到服务器 client_socket.sendall(cmd.encode('utf-8')) # 处理服务器响应 if cmd.startswith('get'): # 获取文件名 filename = cmd.split()[1] # 从服务器接收文件数据 file_data = client_socket.recv(1024) # 判断文件是否存在 if file_data.decode('utf-8') == 'File not found!': print('File not found!') else: # 保存文件到本地 with open(filename, 'wb') as f: f.write(file_data) print('File received successfully!') elif cmd.startswith('put'): # 获取文件名 filename = cmd.split()[1] # 判断文件是否存在 if os.path.exists(filename): # 打开文件并读取文件内容 with open(filename, 'rb') as f: file_data = f.read() # 向服务器发送文件数据 client_socket.sendall(file_data) print('File sent successfully!') else: # 如果文件不存在,向服务器发送错误信息 error_msg = 'File not found!' client_socket.sendall(error_msg.encode('utf-8')) print(error_msg) elif cmd == 'list': # 从服务器接收文件列表 file_list_data = client_socket.recv(1024) # 将文件列表转换为字符串 file_list_str = file_list_data.decode('utf-8') # 打印文件列表 print(file_list_str) # 关闭客户Socket连接 client_socket.close() ``` 注意:以上代码仅供参考,需要根据具体情况进行修改和完善。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值