20181225 基于TCP/IP和基于UDP/IP的套接字编程
一、TCP/IP的套接字编程
服务器端代码:
import socket
server = 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()
break
server.close()
用户端代码:
import socket
client = 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,没有accept
while 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_DGRAM
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)) #服务器端IP与端口
d,addr = client.recvfrom(1024)
print(d.decode("utf-8"))
client.close()
20181225 基于TCP/IP和基于UDP/IP的套接字编程的更多相关文章
- (网络编程)基于tcp(粘包问题) udp协议的套接字通信
import socket 1.通信套接字(1人1句)服务端和1个客户端 2.通信循环(1人多句)服务端和1个客户端 3.通信循环(多人(串行)多句)多个客户端(服务端服务死:1个客户端---&g ...
- 网络编程之基于UDP协议的套接字编程、基于socketserver实现并发的socket
目录 基于UDP协议的套接字编程 UDP套接字简单示例 服务端 客户端 基于socketserver实现并发的socket 基于TCP协议 server类 request类 继承关系 服务端 客户端1 ...
- 网络编程[第二篇]基于udp协议的套接字编程
udp协议下的套接字编程 一.udp是无链接的 不可靠的 而上篇的tcp协议是可靠的,会有反馈信息来确认信息交换的完成与否 基于udp协议写成的服务端与客户端,各司其职,不管对方是否接收到信息, ...
- 基于UDP协议的套接字编程
基于udp协议的套接字编程 UDP是无链接的,先启动那一端都不会报错 UDP协议是数据报协议,发空的时候也会自带报头,因此客户端输入空,服务端也能收到 一般不用与传输大数据 虽然没有粘包问题,但是不能 ...
- 网络编程----socket介绍、基于tcp协议的套接字实现、基于udp协议的套接字实现
一.客户端/服务器架构(C/S架构) 即C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架 ...
- 基于tcp和udp协议的套接字
socket:是在应用层和传输层之间的一个抽象层,它把TCP/IP层的复杂的操作封装抽象,并提供一些接口供应用层调用 套接字:被设计用于同一台主机上多个应用程序之间的通信,被称为进程之间通信或IPC ...
- 基于tcp/udp协议的套接字通信
目录 一.套接字分类 二.套接字的工作流程 三.基于tcp协议的套接字 四.基于udp协议的套接字 一.套接字分类 1.基于文件类型的套接字家族:AF_UNIX 2.基于网络类型的套接字家族:AF_I ...
- 网络编程(基于udp协议的套接字/socketserver模块/进程简介)
一.基于UDP协议的套接字 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就 ...
- 基于udp协议的套接字及udp协议粘包问题
udp协议的套接字 udp协议传输 服务端和客户端没有建立连接一说. import socket # 总结一下基础工作流程:服务端生成套接字并绑定ip_port,进入数据传输循环,服务端接受客户端发 ...
随机推荐
- Shell笔试题2
1. 从a.log文件中提取包含"WARNING"或"FATAL",同时不包含"IGNOR"的行,然后提取以":"分割的 ...
- Java 在使用@Select遇到的问题:拼接字符串将数组拼为了字符串
Java再用@Select拼接sql语句时候, #{参数名}:是加引号的 ${参数名}:是不加引号的 例如: userIds为List或者数组,值为1,2,3,4,5 1.@Select(" ...
- 安卓adb调试命令常见的问题
首先本人使用的是ubuntu系统,在Eclipse下开发的时候使用无线调试,在终端直接输入adb connect 114.114.114.114没有问题,给手机安装软件用adb install ** ...
- Android Asynchronous Http Client
Features Make asynchronous HTTP requests, handle responses in anonymous callbacks HTTP requests happ ...
- js识别中英文字符的字节长度并进行裁切
//调用方法,传入字符串和需要返回的字节长度即可function cutstr(str,len){ var str_length = 0; var str_len = 0; str_cut = new ...
- 2013 QConf上海软件开发大会总结
带着工作中的一些疑问,我参加了在上海举办的QConf 全球软件开发大会.会议以主题的形式按分会场召开,我主要选择知名网站案例分析.大数据处理技术.高效能团队建设和金融系统架构与设计四个主题内容.三天会 ...
- logback的configuration
logback的<configuration>只有三个属性: 1.scan[boolean]:当scan被设置为true时,当配置文件发生改变,将会被重新加载.默认值为true. 2.sc ...
- UINavigationControlle 之 UINavigationBar及navigationItem关系探讨
在设置标题栏时常常遇到修改标题.修改返回按钮标题.增加一些按钮等需求,实现过程中一般会把UINavigationController.UINavigationBar.navigationItem及se ...
- Azure School,让你系统化快速学习人工智能
要说目前最热门的技术,非人工智能莫属了,让计算机程序能够看懂.听懂.读懂.理解我们的世界!想想就激动!! 上至高大上的个人数字化助理,下至P图软件,各种应用都开始增加AI相关的功能,试问又有哪个技术爱 ...
- datagrid数据表格使用总结
一.加载的css文件 easyui 基本样式: <link href="../easyui/easyui1.5.css" rel="stylesheet" ...