编写一个基于TCP协议的网络通信程序,要求服务器通过套接字连接后,要求输入用户名,判断用户名正确后,向客户端发送连接正确的字符串,在服务器显示客户端的IP地址和端口。
时间: 2023-12-31 16:07:15 浏览: 28
好的,以下是一个基于TCP协议的网络通信程序,实现了服务器通过套接字连接后,要求输入用户名,判断用户名正确后,向客户端发送连接正确的字符串,在服务器显示客户端的IP地址和端口:
服务端代码:
```python
import socket
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
port = 8888
# 绑定端口号
server_socket.bind((host, port))
# 设置最大连接数,超过后排队
server_socket.listen(5)
while True:
# 建立客户端连接
client_socket, addr = server_socket.accept()
print("连接地址:%s" % str(addr))
# 向客户端发送连接正确的字符串
client_socket.send("连接成功!请输入用户名:".encode())
# 接收用户名
username = client_socket.recv(1024).decode().strip()
# 判断用户名是否正确
if username == "admin":
# 发送连接正确的字符串
client_socket.send("用户名正确,欢迎您!".encode())
else:
# 发送连接错误的字符串
client_socket.send("用户名错误,连接失败!".encode())
# 关闭连接
client_socket.close()
```
客户端代码:
```python
import socket
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
port = 8888
# 连接服务端
client_socket.connect((host, port))
# 接收连接正确的字符串
recv_msg = client_socket.recv(1024).decode()
print(recv_msg)
# 输入用户名
username = input()
# 发送用户名
client_socket.send(username.encode())
# 接收连接结果字符串
recv_msg = client_socket.recv(1024).decode()
print(recv_msg)
# 关闭连接
client_socket.close()
```
注意:以上代码中的hostname应该是服务器的IP地址,而不是客户端的IP地址。另外,为了方便起见,以上代码中并没有实现多用户的情况,仅仅是实现了单用户的情况。