python--socket编程

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。

#--基于TCP/IP 套接字 服务端的简单实例

#tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端

服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束

from socket import socket
ip_port=("127.0.0.1",8080)
buf_size=1024

tcp_server=socket(AF_INET,SOCK_STREAM)
tcp_server.bind(ip_port)
tcp_server.listen(5)
conn,addr=tcp_server.accpet()
msg=conn.recv(buf_size)
print("收到客户端发送的消息",msg.decode("utf-8"))
conn.send(msg.upper())
conn.close()
tcp_server.close()
tcp_server服务端

#基于TCP/IP 套接字 客户端的简单实例

from socket import *
ip_port=("127.0.0.1",8080)
buf_size=1024
tcp_client=socket(AF_INET,SOCK_STRAM)
tcp_client.connect(ip_port)
tcp_client.send("hello".encode("utf-8"))
data=client.recv(buf_size)
print("客户端收到消息",data.decode("utf-8"))
tcp.client.close()
tcp_client客户端

#基于UDP的套接字服务端示例

#udp是无链接的,先启动哪一端都不会报错

from socket import *
ip_port=("127.0.0.1",8080)
buf_size=1024
udp_server=socket(AF_INET,SOCK_DGRAM)
udp_server.bind(ip_port)
msg,addr=udp_server.recvfrom(buf_size)
print("服务端收到消息",msg.decode("utf-8"))
udp_server.sendto(msg.upper(),addr)
udp_server服务端

#基于UDP的套接字客户端示例

from socket import *
ip_port=("127.0.0.1",8080)
buf_size=1024
udp_client=socket(AF_INET,SOCK_DRGAM)
udp_client.sendto("hello".encode("utf-8"),ip_port)
data,addr=udp_client.recvfrom(bufsize)
print(data.decode("utf-8"))
udp_client客户端
如果我失败了,至少我尝试过,不会因为痛失机会而后悔
原文地址:https://www.cnblogs.com/tangcode/p/11534052.html