实现服务器与客户端的简单通信
服务器代码
import socket
def tcp_server():
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#tcp的socket, 开启一个缓冲区
addr=("192.168.0.106",2000)
s.bind(addr)
s.listen(128)#同时可以往缓冲区中放入的连接数
new_client, client_addr=s.accept()#和客户端的s.connect()一起实现三次握手, 接收连接请求, 返回客户端的IP地址和端口号
print(client_addr)
new_client.send("I am serve".encode('utf8'))
data=new_client.recv(100)
print(data.decode('utf8'))
new_client.close()#开始四次挥手
s.close()
def udp_server():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 第一个socket代表socket包, 第二个socket代表socket类
addr = ("192.168.0.106", 2000) # 写1024以上端口
s.bind(addr) # 失败直接抛出异常,绑定服务器的IP地址和端口
data, client_addr = s.recvfrom(100) # 100代表接收100字节, recvfrom的大小要>sendto发送的大小
s.sendto('world'.encode('utf8'), client_addr)
s.close()
if __name__=="__main__":
tcp_server()
客户端代码
import socket
def udp_client():
client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
dest_addr=("192.168.0.106",2000)#写1024以上端口, 目标服务器的IP地址和端口
client.sendto(b'hello',dest_addr)
data, _=client.recvfrom(100)
print(data.decode('utf8'))
client.close()
def tcp_client():
client=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
dest_addr=("192.168.0.106",2000)
client.connect(dest_addr)
data=client.recv(100)
print(data.decode('utf8'))
client.send("I am a man".encode('utf8'))
client.close()
if __name__=="__main__":
tcp_client()