socket创建服务端和客户端

看情况选择相对应的套接字
*面向连接的传输--tcp协议--可靠的--流式套接字(SOCK_STREAM)
*面向无连接的传输--udp协议--不可靠的--数据报套接字(SOCK_DGRAM)

在liunx中  telnet ip port 可以当成临时客服端

服务端示例:

创建服务端示例:
from socket import *

#创建套接字(参数:地址族类型,套接字类型,选定子协议类型)
sockfd = socket(AF_INET,SOCK_STREAM,proto = 0)

#绑定地址(功能:绑定地址,参数(ip,port))
sockfd.bind(("0.0.0.0",9099))

#设置监听(参数:监听队列的大小)
sockfd.listen(5)

#等待接收连接(会进行阻塞,当客户端连接就往下运行)
#返回值:connfd 新的套接字,用于和客户端通信,add 连接客户端的地址(ip,port)
print("Waiting for connect...")
connfd,addr = sockfd.accept()
print("Connect from",addr)

#收发消息(没接收到消息也会进行阻塞)
#参数:一次接收消息的大小字节(bytes格式)
data = connfd.recv(1024)
print(data)

#要发送的内容(bytes格式),返回实际发送的字节数
n = connfd.send(b"Receive your message")
print(n)
#关闭套接字
connfd.close()
sockfd.close()


客户端示例:
from socket import *

#创建套接字
sockfd = socket(AF_INET,SOCK_STREAM)

#发起连接
server_addr = ("127.0.0.1",9099)
sockfd.connect(server_addr)

#收发消息
data = input("发送>>")
sockfd.send(data.encode())  #将字符串转换成二进制

data = sockfd.recv(1024)
print("接收到:",data.decode())

#关闭字节套
sockfd.close()  

猜你喜欢

转载自www.cnblogs.com/zengsf/p/9595241.html