编写一个基于TCP协议的网络通信程序,要求服务器通过套接字连接后,要求输入用户名,判断用户名正确后,向客户端发送连接正确的字符串,在服务器显示客户端的IP地址和端口。
时间: 2023-12-31 21:07:15 浏览: 32
好的,这是一个比较常见的网络编程题目。我可以提供一个基于Python语言的解答。以下是服务器端代码:
```python
import socket
# 创建套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口
server_socket.bind(('localhost', 8888))
# 监听客户端连接
server_socket.listen(1)
print('服务器已启动,等待客户端连接...')
while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()
# 接收客户端发送的用户名
username = client_socket.recv(1024).decode()
# 判断用户名是否正确
if username == 'admin':
# 向客户端发送连接正确的字符串
client_socket.send('连接成功!'.encode())
# 在服务器显示客户端的IP地址和端口
print('客户端', client_address, '连接成功!')
else:
# 向客户端发送连接错误的字符串
client_socket.send('连接失败!用户名错误。'.encode())
# 关闭客户端套接字
client_socket.close()
```
以下是客户端代码:
```python
import socket
# 创建套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect(('localhost', 8888))
# 输入用户名
username = input('请输入用户名:')
# 发送用户名给服务器
client_socket.send(username.encode())
# 接收服务器发送的连接结果
result = client_socket.recv(1024).decode()
# 输出连接结果
print(result)
# 关闭套接字
client_socket.close()
```
这个程序基于TCP协议实现了一个简单的网络通信,可以实现输入用户名进行连接,并根据用户名判断连接是否成功。在服务器端,我们通过套接字接收客户端发送的用户名,并判断用户名是否正确,如果正确则向客户端发送连接成功的消息,并在服务器端显示客户端的IP地址和端口;如果用户名不正确,则向客户端发送连接失败的消息。在客户端,我们先输入用户名,然后将用户名发送给服务器,接收服务器返回的连接结果并输出。