网络编程---scoket_Tcp
需要存在一个服务端进行数据的接收与回复,需要存在一个客户端进行数据的发送与接收
Server端
import socket sk = socket.socket() sk.bind(('127.0.0.1',8898)) #把地址绑定到套接字 sk.listen() #监听链接 conn,addr = sk.accept() #接受客户端链接 ret = conn.recv(1024) #接收客户端信息 print(ret) #打印客户端信息 conn.send(b'hi') #向客户端发送信息 conn.close() #关闭客户端套接字 sk.close() #关闭服务器套接字(可选)
client端
import socket sk = socket.socket() # 创建客户套接字 sk.connect(('127.0.0.1',8898)) # 尝试连接服务器 sk.send(b'hello!') ret = sk.recv(1024) # 对话(发送/接收) print(ret) sk.close() # 关闭客户套接字
在重启服务端可能会遇到的问题:

解决方法:(即我们每次写的时候都加上这段话)
#加入一条socket配置,重用ip和端口 import socket from socket import SOL_SOCKET,SO_REUSEADDR sk = socket.socket() sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #就是它,在bind前加 sk.bind(('127.0.0.1',8898)) #把地址绑定到套接字 sk.listen() #监听链接 conn,addr = sk.accept() #接受客户端链接 ret = conn.recv(1024) #接收客户端信息 print(ret) #打印客户端信息 conn.send(b'hi') #向客户端发送信息 conn.close() #关闭客户端套接字 sk.close() #关闭服务器套接字(可选)
例子:
# server 端 import socker from socker import SOL_SOCKET,SO_REUSEADDR sk = socket.socket() sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) sk.bink(('127.0.0.1',8080)) sk.listen() conn,addr = sk.accept() ret = conn.recv(1024).decode() # 将接收到的bytes类型进行转换 # 接收客户发送过来的数据 print(ret) conn.send(bytes('收到',encolding = 'utf-8')) # 必须传bytes数据类型 # 向客户端回复数据 conn.close() sk.close()
# client 端
import socket sk = socket.socket() sk.connect(('127.0.0.1',8080)) # 连接服务端的IP和端口 sk.send(bytes('你好',encoding = 'utf-8')) # 向服务端发送数据 ret = sk.recv(1024).decode() # 接收服务端回复的数据 print(ret) sk.close() # 关闭会话
浙公网安备 33010602011771号