博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket
阅读量:5132 次
发布时间:2019-06-13

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

4. socket

  • 作用:Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
  • 基于TCP协议socket
服务端:import socketphone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #网络通信种类,tcp 协议 流式协议print(phone)phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #重新用端口# 本地回环地址,用于测试,只能自己访问phone.bind(('127.0.0.1',8080))  #固定IP 端口phone.listen(5)    #半连接池#等待消息print('start..')while True :    conn,client_addr=phone.accept()   #(三次握手建立双向链接,(客户端的IP,端口)    print('链接成功')  #客户端运行,服务端打印此信息    print(client_addr)  #客户端地址    print(conn)  # 套接字对象#通信    while True :        try:            data=conn.recv(1024) #最大接受的字节数,没有数据会在原地一直等待收,即发送者发送的数据必须大于0bytes            if len(data)== 0: break  #在客户端单方面断开链接,服务端出现收空数据的情况            conn.send(data.upper())  #发消息        except ConnectionResetError :    #win系统针对于解决客户端不发信息,服务端报错问题            break    conn.close()phone.close()客户端:import socketphone = socket .socket (socket .AF_INET ,socket .SOCK_STREAM )print(phone)phone.connect(('127.0.0.1',8080))  #指定服务端的IP和端口while True :    msg = input('<<<')    phone.send(bytes(msg,encoding= 'utf-8'))  #传输二进制    data = phone.recv(1024)   #收消息    print(data)phone.close()#步骤#(1)确认网络通信类型和协议 (2)指定服务端的IP和端口 (3)发收消息(4)关闭
  • 基于UDP协议的socket
客户端:import socketserver=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #数据报协议-》udpserver.bind(('127.0.0.1',8080))while True:    data,client_addr=server.recvfrom(1024)    print('===>',data,client_addr)    server.sendto(data.upper(),client_addr)server.close()服务端:import socketclient=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #数据报协议-》udpwhile True:    msg=input('>>: ').strip() #msg=''    client.sendto(msg.encode('utf-8'),('127.0.0.1',8080))    data,server_addr=client.recvfrom(1024)    print(data)client.close()

转载于:https://www.cnblogs.com/quqinchao/p/11217638.html

你可能感兴趣的文章
composer 国内镜像配置
查看>>
软件是天时、地利、人和的产物!
查看>>
python定时清空本目录下除本脚本外的全部文件
查看>>
【PHP】在目标字符串指定位置插入字符串
查看>>
【JS】jQuery设置定时器,访问服务器(PHP示例)配合微信、支付宝原生支付,跳转web网页...
查看>>
实验四2
查看>>
在小程序开发的新风口 看华为云如何助立创科技抢占市场红利
查看>>
第一次博客随笔:苏钰冰
查看>>
HIS-DELPHI-读取数据库配置
查看>>
如何引入iconfont图标与Element-UI组件
查看>>
ArcMap合并之路 -- 该段路合并成一个完整的路
查看>>
在UC浏览器打开链接唤醒app,假设没有安装该app,则跳转到appstore下载该应用
查看>>
skozrloug
查看>>
D. Flowers Codeforces Round #271(div2)
查看>>
表单重复提交
查看>>
HDU2767 Proving Equivalences(scc)
查看>>
shell脚本函数与数组
查看>>
HDU - 2825(AC自动机+状态压缩DP(需要优化))
查看>>
论Nim中的 proc 和 method
查看>>
Arch linux配置指南
查看>>