编写一个基于TCP协议的网络通信程序,要求服务器通过套接字连接后,要求输入用户名,判断用户名正确后,向客户端发送连接正确的字符串,在服务器显示客户端的IP地址和端口。
时间: 2024-02-27 09:51:47 浏览: 80
好的,我会为你解答这个问题。下面是一个基于TCP协议的网络通信程序,实现了服务器通过套接字连接后,要求输入用户名,判断用户名正确后,向客户端发送连接正确的字符串,在服务器显示客户端的IP地址和端口。
服务器端代码:
``` python
import socket
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server_socket.bind(('127.0.0.1', 8888))
# 监听客户端连接请求
server_socket.listen(5)
print('服务器已经启动,等待客户端连接...')
# 等待客户端连接
client_socket, client_address = server_socket.accept()
print('客户端已连接,IP地址为:', client_address[0], ',端口号为:', client_address[1])
# 发送连接成功提示
client_socket.send('连接成功,请输入用户名:'.encode())
# 接收客户端输入的用户名
username = client_socket.recv(1024).decode()
# 判断用户名是否正确
if username == 'admin':
# 发送连接成功提示
client_socket.send('用户名正确,连接成功!'.encode())
print('客户端IP地址为:', client_address[0], ',端口号为:', client_address[1], ',用户名为:', username)
else:
# 发送连接失败提示
client_socket.send('用户名错误,连接失败!'.encode())
# 关闭socket连接
client_socket.close()
server_socket.close()
```
客户端代码:
``` python
import socket
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect(('127.0.0.1', 8888))
# 接收服务器发送的连接成功提示
print(client_socket.recv(1024).decode())
# 输入用户名
username = input('请输入用户名:')
# 发送用户名到服务器
client_socket.send(username.encode())
# 接收服务器发送的连接结果
print(client_socket.recv(1024).decode())
# 关闭socket连接
client_socket.close()
```
当客户端运行后,会提示输入用户名。如果输入的用户名为"admin",则服务器会向客户端发送连接成功的提示,并在服务器端显示客户端的IP地址和端口号以及用户名;否则,服务器会向客户端发送连接失败的提示。
阅读全文