参与拿奖:本文已参与「新人创作礼」活动,一起开启掘金创作之路
1.运行效果
服务器端:负责接受消息
客户端:负责发送消息
2.使用TCP实现终端通信
①服务器端,包括创建套接字,绑定,监听,接送消息
import socket
def main():
words={"Hello":"Hello","Hi":"Hi"}
HOST=''
PORT=50007
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定socket
s.bind((HOST,PORT))
#监听
s.listen(1)
print('Listening at port:',PORT)
conn,addr=s.accept() # 接收客户端发送的信息
print('Connect by:',addr) # 打印连接信息
while True:
data=conn.recv(1024) # ;接受1024字节大小的数据
data=data.decode() # 将接受的数据进行解码
if not data:
break
print('Received message:',data)
conn.sendall(words.get(data,'Nothing').encode()) # 根据接受的信息,发送对应的信号
conn.close() # 关闭连接
s.close() # 关闭服务器
if __name__ == '__main__':
main()
②客户端,包括连接服务器,发送消息
import socket
import sys
def main():
#服务器端IP
HOST='127.0.0.1'
#服务器端端口号
PORT=50007
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((HOST,PORT)) # 连接服务器
except Exception as e:
print('Server not found or not open!')
sys.exit()
while True:
c=input('Input the content you want to send:')
#发送数据
s.sendall(c.encode()) # 发送消息
#从服务器端接受数据
data=s.recv(1024) # 接收消息
data=data.decode() # 解码
print('Received:',data) # 打印接收的消息
if c.lower()=='bye': # 收到信号,退出循环
break
s.close() # 关闭客户端
if __name__ == '__main__':
main()
③运行方式
先运行服务器端代码,并始终保持运行,然后另外开一个窗口运行客户端代码
学习笔记
1.客户端连接方式,使用元组形式建立连接
s.connect((HOST,PORT))
2.服务器端使用元组形式绑定端口号和端口
#绑定socket
s.bind((HOST,PORT))
3.初始化套接字:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
4.从服务器端接收数据
data=conn.recv(1024)