使用Python的socket库可以实现网络编程。我们可以自制聊天软件了!
本程序涉及两个代码文件:myserver.py和myclient.py。
都在一个机子上运行,先运行服务器代码,再运行客户端代码,最终的效果如下:
~/Desktop/webconnection$ python3.6 myserver.py
服务器就绪!
有人连进来了,看看他发来了什么?
他说: Hello! How are you doing!
回他什么呢?Fine. What about you?
已回复,等待下一次接入……
有人连进来了,看看他发来了什么?
他说: I am doing well.
回他什么呢?OK. That sounds nice! Shall we plan a picnic this weekend?
已回复,等待下一次接入……
有人连进来了,看看他发来了什么?
他说: Ah, it's nice!
回他什么呢?OK. Let's meet this Saturday morning at the park gate.
已回复,等待下一次接入……
有人连进来了,看看他发来了什么?
他说: No problem. See you then!
回他什么呢?See you!
已回复,等待下一次接入……
~/Desktop/webconnection$ python3.6 myclient.py
请输入信息:Hello! How are you doing!
信息已发送,等待回复……
收到回复: Fine. What about you?
请输入信息:I am doing well.
信息已发送,等待回复……
收到回复: OK. That sounds nice! Shall we plan a picnic this weekend?
请输入信息:Ah, it's nice!
信息已发送,等待回复……
收到回复: OK. Let's meet this Saturday morning at the park gate.
请输入信息:No problem. See you then!
信息已发送,等待回复……
收到回复: See you!
请输入信息:
两个代码文件分别如下:
#myserver.py
import socket
# 创建socket对象
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 绑定监听端口
s.bind(('127.0.0.1',8888))
# 监听
s.listen(1)
print("服务器就绪!")
while True:
# 接收连接
sock,addr = s.accept()
print("有人连进来了,看看他发来了什么?")
# 接收数据
buffer = []
d = sock.recv(1024)
buffer.append(d)
# 把字节连接起来
data = b''.join(buffer)
print("他说:", data.decode())
senddata=input("回他什么呢?")
sock.send(bytes(senddata,encoding="UTF-8"))
sock.close
print("已回复,等待下一次接入……")
#myclient.py
1 # 导入socket这个库
2 import socket
3
4 while True:
5 senddata=input("请输入信息:")
6 # 创建一个socket对象
7 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
8 # 开始建立TCP连接
9 s.connect(("127.0.0.1",8888))
10 s.sendall(bytes(senddata,encoding="UTF-8"))
11 print("信息已发送,等待回复……")
12 # 接收数据
13 buffer = []
14 d = s.recv(1024)
15 buffer.append(d)
16
17 # 把字节连接起来
18 data = b''.join(buffer)
19 print("收到回复:",data.decode())
20
21 # 关闭连接
22 s.close() 1 # 导入socket这个库
2 import socket
3
4 while True:
5 senddata=input("请输入信息:")
6 # 创建一个socket对象
7 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
8 # 开始建立TCP连接
9 s.connect(("127.0.0.1",8888))
10 s.sendall(bytes(senddata,encoding="UTF-8"))
11 print("信息已发送,等待回复……")
12 # 接收数据
13 buffer = []
14 d = s.recv(1024)
15 buffer.append(d)
16
17 # 把字节连接起来
18 data = b''.join(buffer)
19 print("收到回复:",data.decode())
20
21 # 关闭连接
22 s.close()