20181225 基于TCP/IP和基于UDP/IP的套接字编程
一、TCP/IP的套接字编程
服务器端代码:
import socketserver = socket.socket() # 默认是基于TCP# 基于TCP的对象serve=socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)# 基于UDP的对象serve=socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)server.bind(("127.0.0.1",8888)) #绑定服务器IP地址和端口server.listen() #监听是否有握手请求,参数一般不写(由系统默认处理)或者不超过5个while True: client,addr = serve.accept() #得到对方的socket对象和地址 while True: try: data = client.recv(1024) #1024表示应用程序的缓冲区大小,recv是从系统缓冲区读取数据到应用程序bytes if not data: # 如果是windows,对方强行关闭连接,会抛出异常,如果是linux,不会抛出异常,会死循环收到空的数据包。 print("对方已经关闭.....") client.close() break print(data.decode("utf-8")) # 收到的数据解码并打印 client.send(data.upper()) except ConnectionResetError: print("对方异常关闭连接...") client.close() breakserver.close()
用户端代码:
import socketclient = socket.socket()client.connect(("127.0.0.1",8888))while True: msg = input(">:") client.send(msg.encode("utf-8")) data = client.recv(1024) print("收到服务器:%s" % data.decode("utf-8"))client.close()
半连接池:此处待续
二、UDP/IP的套接字编程
服务器端代码:
import socket# UDP协议 在创建socket时只有一个类型不同(SOCK_DGRAM)server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,proto=0)server.bind(("127.0.0.1",8888))# 没有监听listen,没有acceptwhile True: data,addr = server.recvfrom(1024) # 阻塞 直到收到数据为止 print("收到来自%s的消息:%s" % (addr[0],data.decode("utf-8"))) # addr是元组,包含客户端IP和端口号 # 返回值为 数据 和 对方ip地址 和端口号 server.sendto(data.upper(),addr)server.close()
客户端代码:
import socket# 客户端也为SOCK_DGRAMclient = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)while True: data = input(">>:").encode("utf-8") client.sendto(data,("127.0.0.1",8888)) #服务器端IP与端口 d,addr = client.recvfrom(1024) print(d.decode("utf-8"))client.close()
转载于:https://www.cnblogs.com/realadmin/p/10179264.html
20181225 基于TCP/IP和基于UDP/IP的套接字编程相关推荐
- TCP套接字编程(C语言)
本篇主要内容介绍: 介绍TCP套接字基本概念 介绍TCP套接字编程流程 基本TCP套接字函数介绍 1.TCP套接字基本概念(非官方解释,个人总结) 套接字是一种网络API,提供一种进程间的通信方法,使 ...
- udp协议没有粘包问题、基于socketserver实现并发的socket(基于tcp、udp协议)、基于udp协议的套接字、操作系统原理以及进程知识
基于udp协议的套接字通信服务端 from socket import *server=socket(AF_INET,SOCK_DGRAM) #数据报协议->udp server.bind((' ...
- TCP/IP网络编程---Linux系统下的TCP套接字编程
目录 第一章 理解网络编程和套接字 1.1 网络编程和套接字概要 1.2 基于Linux的文件操作 1.2.1 底层文件访问和文件描述符 1.2.2 打开文件 1.2.3 关闭文件 1.2.4 将数据 ...
- 基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程
基于UDP协议 的socket套接字编程 1.UDP套接字简单示例 1.1服务端 import socketserver = socket.socket(socket.AF_INET,socket.S ...
- 套接字编程——基于UDP协议
<UDP用到的大多数函数在上一片TCP中已讲解,这儿就不再重复了,只有接受和发送所用的函数不同> 函数 (1)接受--recvfrom() (2)发送--sendto() a. 参数 so ...
- 基于UDP协议的套接字+socketserver模块
基于UDP协议的套接字 user datagram protocal 数据报协议 无双向通道.自带报头.类似发短信.不会粘包 不可靠:数据发送时,丢就丢了 UDP socket: 服务端: impor ...
- TCP/IP编程之SO_REUSEADDR和SO_REUSEPORT套接字选项
基本概念: SO_REUSEADDR套接字选项能起到以下4个不同的功用: (1)SO_REUSEADDR允许启动一个监听服务器并捆绑众所周知端口,即使以前建立的该端口用作它们的本地端口的连接仍存在. ...
- day26-2 基于TCP协议的套接字编程
目录 基于TCP协议的套接字编程 套接字 套接字工作流程 基于TCP协议的套接字编程(简单) 服务端 客户端 基于TCP协议的套接字编程(循环) 服务端 客户端1 客户端2 基于TCP协议的套接字编程 ...
- TCP/IP网络编程——理解网络编程和套接字编程
完整版文章请参考: TCP/IP网络编程完整版文章 文章目录 一.理解网络编程和套接字编程 1.1 socket套接字 1.1.1 一个例子来表示TCP的网络连接 1.1.2 程序实现 1.2 文件操 ...
最新文章
- 限制用户对页的访问php,如何限制对Django中管理页的访问?
- Android UI库书签
- springmvc5源码
- dsp广告和信息流广告区别_信息流广告和sem广告有哪些区别2021?
- cartographer环境配置及运行
- idea 配置 maven 和 镜像
- 我的世界服务器怎么修改标语,怎么用资源包修改我的世界闪烁标语
- 超详细SPSS主成分分析计算指标权重(二:权重计算及极差法标准化)
- php和jsp有什么区别,php和jsp之间的区别是什么
- 微信小程序关于map地图
- 人脸识别与膜虹识别_虹膜识别技术优势明显 比指纹、人脸识别更可靠
- 双绞线的种类与选择:
- python 头条新闻机器人_荐GitHub:今日头条机器人
- 金启孮:普通话其实是满州人的蹩脚汉语
- 东方财富、同花顺、大智慧、通达信的Level2行情接口哪个好?
- 转载-大数据管理神器:Ambari自定义stack和服务二次开发详细教程
- suunto android 跑步软件,SUUNTO APP | 自定义运动模式教程
- 分布式任务调度平台之 xxl-job配置部署
- Python编程-从入门到实践 Chapter19 第19章 创建用户账户的坑
- 为Electron 打包后的桌面程序添加自定义向导
热门文章
- linux导出Excel The maximum column width for an individual cell is 255 characters
- UVA	11549 Calculator Conundrum
- php cookie赋值使用
- WPF——Expander控件(转)
- GitHub人脸属性编辑神器横空出世!让你爱上异性的自己!
- CVPR 2021 图像压缩最新进展
- ECCV 2020 目标检测与跟踪赛事,清华大学主办 GigaVision 2020 欢迎报名~
- 穿墙透视真的来了!MIT华人团队超强动作检测模型,小黑屋照样夜视
- 【TensorFlow】TensorFlow从浅入深系列之九 -- 教你认识图像识别中经典数据集
- LQR轨迹跟踪算法Python/Matlab算法实现2