博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket模块,简单的套接字,加循环
阅读量:5298 次
发布时间:2019-06-14

本文共 2363 字,大约阅读时间需要 7 分钟。

服务端:

 

import socket #1.买手机 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #SOCK_STEAM=>TCP流式协议, print(phone) #是用来接收链接请求,从而建立链接的 # phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # print(phone) #2.插手机卡 phone.bind(('127.0.0.1',8080)) #0-65535 #3.开机 phone.listen(5) # 同一时刻最大请求数为5个 print('start....') #4.等待电话请求 conn,client_addr=phone.accept() #(双向链接的套接字对象,存放客户端ip和端口的小元组) # print(conn) # conn代表双向链接,用来收发消息 # print(client_addr) #5.收\发消息 data=conn.recv(1024) #1024接收的最大字节数bytes print('收到客户的数据',data) conn.send(data.upper()) #6.挂电话链接 conn.close() #7.关机 phone.close()

客户端:

 

import socket #1.买手机 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #SOCK_STEAM=>TCP流式协议, #2.拨号 phone.connect(('127.0.0.1',8080)) #3.发\收消息 phone.send('hello'.encode('utf-8')) # 只能发bytes类型 data=phone.recv(1024) print('收到服务端的消息: ',data) #4.挂电话链接 phone.close()

通信循环模板:
服务端:

 

import socket iphone = socket.socket() iphone.bind(('127.0.0.1',5000)) iphone.listen() while True:     client,addr = iphone.accept()     print(type(client),client,type(addr),addr)     while True:         try:             data = client.recv(1024)             if not data:                 client.close()                 break             print('收到客户端消息:%s'% data.decode('utf-8'))             client.send(data.upper())         except ConnectionResetError:             print('客户端强行关闭了连接')             client.close()             break client.close() iphone.close()

客户端:

import socket iphone = socket.socket() iphone.connect(('127.0.0.1',5000)) while True:     msg = input('>>: ').strip()     iphone.send(msg.encode('utf-8'))     data = iphone.recv(1024)     print('收到服务端消息:%s'%data.decode('utf-8')) iphone.close()

基于UDP的通信循环:

服务端:

import socket # UDP协议 在创建socket是 只有一个类型不同 server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,proto=0) server.bind(("127.0.0.1",8888)) while True:     data,addr = server.recvfrom(1024) # 阻塞 直到收到数据为止     print("收到来自%s的消息:%s" % (data.decode("utf-8"),addr[0]))     # 返回值为 数据 和 对方ip地址 和端口号     server.sendto(data.upper(),addr) print(res) server.close() # 写一个UDP的多人聊天程序 # 客户端:
import socket client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0) while True:     data = input(">>:").encode("utf-8")     client.sendto(data,("127.0.0.1",8888))     d,addr = client.recvfrom(1024)     print(d.decode("utf-8")) client.close()

 

转载于:https://www.cnblogs.com/huangchaonan/p/10176518.html

你可能感兴趣的文章
Competing Consumers Pattern (竞争消费者模式)
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>
PHP魔术方法之__call与__callStatic方法
查看>>
ubuntu 安装后的配置
查看>>
web前端之路,js的一些好书(摘自聂微东 )
查看>>
【模板】对拍程序
查看>>
【转】redo与undo
查看>>
解决升级系统导致的 curl: (48) An unknown option was passed in to libcurl
查看>>
Java Session 介绍;
查看>>
spoj TBATTLE 质因数分解+二分
查看>>
Django 模型层
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>