河南省大型项目建设办公室网站,wordpress外贸主题免费,公司起名字推荐,网站开发是分为前端和后端吗Socket又称套接字#xff0c;应用程序通常通过套接字向网络发出请求或者应答网络请求#xff0c;使主机间或者一台计算机上的进程间可以通讯(最初设计是为了是使同一台计算机中的不同进程进行信息传递通信)#xff0c;最后拓展到可以使网络上两台计…Socket又称套接字应用程序通常通过套接字向网络发出请求或者应答网络请求使主机间或者一台计算机上的进程间可以通讯(最初设计是为了是使同一台计算机中的不同进程进行信息传递通信)最后拓展到可以使网络上两台计算机的不同程序进行数据信息传递 服务端接口代码流程以及参数介绍
# 服务端代码流程介绍# 导入模块
import socket# 1.创建 socket 对象 设置通信方式
# tcp方式通信流式通信可靠持续传输且互相确认所谓三次握手四次挥手就是说的tcp成功不成功可感知不易丢包但是占用资源多
tcp_socket_obj socket.socket(socket.AF_INET, socket.SOCK_STREAM)# udp方式通信包式通信可靠性不佳直接将信息打包成整体一次性发送成功不成功无法感知易丢包但是占用资源少
udp_socket_obj socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# family: 套接字家族可以使 AF_UNIX 或者 AF_INET。
# type: 套接字类型可以根据是面向连接的还是非连接(tcp/udp)分为 SOCK_STREAM 或 SOCK_DGRAM。
# protocol: 一般不填默认为 0。# 2.bind主机的ip和端口到套接字(服务端的话就是自己的ip和自己设定的通信进程程序所用的端口,客户端的话就是服务器端的ip和设定的端口)
# bind()这个函数由服务端Socket调用会将之前创建Socker与指定的IP地址和端口进行绑定。如果之前使用了AF_INET初始化Socket,那么这里可以使用元组(host, port) 的形式表示地址。
## 3.s.listen() #开始TCP监听
# listen()这个函数用于在使用TCP的服务端开启监听模式。这个函数可以使用个参数来指定可以挂起的最大连接数量。这个参数的值最小为1一般设置为5。
## 4.s.accept() #被动接受TCP客户的连接,(阻塞式)等待连接的到来
# accept()这个函数用于在使用TCP的服务端接收连接一般是阻塞态。接受TCP连接并返回(conn,adresse) 其中conn 是新的套接字对象可以用来接收和发送数据 address是连接客户端的地址。
# 需要注意当客户端不与服务端连接的话程序会在此接口处阻塞不会往下走除非有客户端连接到服务端服务端代码样例
import socket # 导入 socket 模块s socket.socket() # 创建 socket 对象
host socket.gethostname() # 获取本地主机名 # 设置端口
s.bind((host_ip, port)) # 绑定端口s.listen(5) # 等待客户端连接
while True:c,addr s.accept() # 建立客户端连接print(来自后面所示主机的连接已建立, addr)# 接收消息client_msgconn.recv(1024) # 收消息print(client_msg.decode(utf-8))# 发送消息 网络传输的是二进制的对象c.send(欢迎访问服务端.encode(utf-8))# conn.sendall(Hello! A_dmin!!.encodingutf-8)c.close() # 关闭连接s.bind() #绑定(主机,端口号)到套接字 s.listen() #开始TCP监听 s.accept() #被动接受TCP客户的连接,(阻塞式)等待连接的到来 s.connect() #主动初始化TCP服务器连接 s.connect_ex() #connect()函数的扩展版本,出错时返回出错码,而不是抛出异常 s.recv() #接收TCP数据 s.send() #发送TCP数据(send在待发送数据量大于己端缓存区剩余空间时,数据丢失,不会发完) s.sendall() #发送完整的TCP数据(本质就是循环调用send,sendall在待发送数据量大于己端缓存区剩余空间时,数据不丢失,循环调用send直到发完) s.recvfrom() #接收UDP数据 s.sendto() #发送UDP数据 s.getpeername() #连接到当前套接字的远端的地址 s.getsockname() #当前套接字的地址 s.getsockopt() #返回指定套接字的参数 s.setsockopt() #设置指定套接字的参数 s.close() #关闭套接字
客户端代码样例
import socket# 创建tcp,stocket对象
phonesocket.socket(socket.AF_INET,socket.SOCK_STREAM)# 连接服务端
phone.connect((host_ip, port))# 给服务端发消息
phone.send(hello.encode(utf-8))# 接受消息
back_msgphone.recv(1024)
print(back_msg)
phone.close()参考博客链接