python套接字
2021/4/17 22:28:42
本文主要是介绍python套接字,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
udp客户端
import socket import sys def mian(argv): #创建套接字,类型为ipv4(AF_INET),协议为UDP(SOCK_DGRAM) up_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) while 1: send_data=input("input your speak:") if send_data=="break": break #发送数据给指定的Ip和端口号,内容类型为utf-8 # up_socket.sendto(b"hahhahah",("172.21.204.107",8080)) up_socket.sendto(send_data.encode("utf-8"),(argv,8080)) #使用完要关闭套接字 up_socket.close() if __name__=="__main__": mian(sys.argv[1])
tcp服务端
import socket def main(): #创建套接字,类型为ipv4(AF_INET),协议为TCP(SOCK_STREAM) tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #服务端绑定端口和Ip tcp_socket.bind(("",8080)) #设置同时能接听为128台服务 tcp_socket.listen(128) while True: print("wait a newclinet come to...") #阻塞等待客户端连接,accpet函数返回值为跟客户端连接的套接字和客户端的IP和端口号 new_client,ipaddr = tcp_socket.accept() print("a new clinet come here!....") print(str(ipaddr)) while 1: #TCP接受数据使用recv函数 #UDP接受数据使用recvfrom函数 recv_data = new_client.recv(1024) #对发来的数据进行utf-8解码 if recv_data.decode("utf-8")=="break": break; else: print("data from clinet:%s"%recv_data.decode("utf-8")) #TCP发送数据使用send函数 #UDP发送数据使用sendto函数 new_client.send("-------ok---------".encode("utf-8")) #同理使用完关闭套接字 new_client.close() print("had to close") tcp_socket.close() if __name__ =="__main__": main()
UDP服务端
import socket import sys def main(): a = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #绑定ip和端口,只能绑定自己 localaddr=("",8080) #不用说服务端肯定绑定ip和端口 a.bind(localaddr) #不用使用accpect函数进行阻塞等待 while 1: #一直接受信息,大小为1024 data = a.recvfrom(1024) #打印元组中的正确信息 data1 = data[0] data2 = data[1] #对方客户端的IP和端口号 if data1 == "break": break else: #解码utf-8 print("%s:%s"%(str(data2),data1.decode("utf-8"))) a.close() if __name__ =="__main__": main()
TCP客户端
import socket def main(): up_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) ipaddr = input("请输入你要传的ip:") ports = int(input("请输入端口:")) new_client=(ipaddr,ports) #tcp需要进行连接服务器 if up_socket.connect(new_client): print("connect is ok!") send_data = input("请输入你要传的数据:") up_socket.send(send_data.encode("utf-8")); if up_socket.recv(1024): data = up_socket.recv print("data from service:%s"% str(data)) else: up_socket.close() if __name__ =="__main__": main()
非阻塞实现
import socekt import time def main(): tcp_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcp_server.bind(("",7891)) tcp_server.listen(128) clinet_list = list() while True: time.sleep(0.5) try: tcp_server.setblocking(False) clinet_socket,clinet_ip = tcp_server.accept() except: print("没有新的客户端连接") else: print("有一个客户端连接是%s" %(str(clinet_ip))) clinet_socket.setblocling(False) clinet_list.append(clinet_socket) for i in clinet_list: try: recv_datas = i.recv(1024) except: pass else: if recv_datas: print("recv is ok!") else: i.close() clinet_list.remove(i) print("客户端关闭") if __name__=="__main__": main()
这篇关于python套接字的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python