python Socket网络编程

常用模块

connect(address):连接远程计算机
send(bytes[,flags]):发送数据
recv(bufsize[,flags]):接收数据
bind(address):绑定地址
listen(backlog):开始监听,等待客户端连接
accept():响应客户端一个请求,接受一个连接

实例

服务端代码

import socket
language={'what is you name':'I am Tom ','how old are you':'25','bye':'bye!'}
HOST='127.0.0.1'
PORT=6666
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)   #1、socket.AF_INET  面向网络的    2、socket.SOCK_STREAM表示tcp连接
s.bind((HOST,PORT))
s.listen(1)  #listen里的参数表示最大连接数量
print("listing at port 6666")
conn,addr=s.accept()  #表示被动接收tcp客户端的连接
print('connect by: ',addr)
while True:
    data=conn.recv(1024)  #接收tcp数据,数据以字符串形式返回
    data=data.decode()
    if not data:
        break
    print('received message:',data)
    conn.sendall(language.get(data,'nothing').encode())  #完整的发送数据
conn.close()
s.close()

客户端代码

import socket,sys
HOST='127.0.0.1'
PORT=6666
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
    s.connect((HOST,PORT))
except Exception as e:
    print('server not found')
    sys.exit()
while True:
    c=input('you say:')
    s.sendall(c.encode())
    data=s.recv(1024)
    data=data.decode()
    print('received:',data)
    if c.lower()=='再见':
        break
s.close()

效果截图

posted @ 2021-11-20 11:49  随风kali  阅读(53)  评论(0编辑  收藏  举报