编写一个基于TCP协议的网络通信程序,要求服务器通过套接字连接后,要求输入用户名,判断用户名正确后,向客户端发送连接正确的字符串,在服务器显示客户端的IP地址和端口。
时间: 2024-02-11 18:05:46 浏览: 23
好的,下面是一个简单的基于TCP协议的网络通信程序,实现了你的要求:
服务器端代码:
```python
import socket
host = 'localhost' # 服务器IP地址
port = 9999 # 服务器端口号
# 创建TCP/IP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定套接字到地址和端口
sock.bind((host, port))
# 开始监听连接
sock.listen(1)
# 等待连接
print('等待连接...')
conn, addr = sock.accept()
print('客户端连接地址:', addr)
# 发送欢迎信息
conn.sendall(b'连接成功,请输入用户名:')
# 接收用户名
username = conn.recv(1024).decode('utf-8')
print('用户名:', username)
# 判断用户名是否正确
if username == 'admin':
conn.sendall(b'用户名正确,欢迎登录!')
else:
conn.sendall(b'用户名错误,连接断开。')
conn.close()
sock.close()
exit()
# 显示客户端地址和端口
print('客户端地址和端口:', addr)
# 关闭连接和套接字
conn.close()
sock.close()
```
客户端代码:
```python
import socket
host = 'localhost' # 服务器IP地址
port = 9999 # 服务器端口号
# 创建TCP/IP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
sock.connect((host, port))
print('已连接服务器:', host, port)
# 接收欢迎信息
data = sock.recv(1024)
print(data.decode('utf-8'))
# 发送用户名
username = input('请输入用户名:')
sock.sendall(username.encode('utf-8'))
# 接收连接结果
data = sock.recv(1024)
print(data.decode('utf-8'))
# 关闭连接和套接字
sock.close()
```
注意:以上代码只是一个简单的示例,实际应用中需要考虑更多的异常情况和安全性问题。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)