22 网络编程--TCP和UDP实现聊天例子
1、TCP简单的一次对话,单通信
客户端:
import socket
HOST = 'localhost'
PORT = 50006
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((HOST,PORT))
client.sendall(b'hello,python')
data = client.recv(1024)
print('Received',data)
服务端:
import socket
HOST = ''
PORT = 50006
sock_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock_server.bind((HOST,PORT))
sock_server.listen(1)
conn,addr = sock_server.accept() while True:
data =conn.recv(1024)
if not data:break
conn.send(data)
2、循环收发数据,单通信(TCP)
客户端:
import socket
HOST = 'localhost'
PORT = 50006
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((HOST,PORT))
while True:
cmd = input('>>').strip()
if not cmd:break client.send(cmd.encode('utf-8'))
data = client.recv(1024)
print('Received',data.decode('utf-8'))
服务端:
import socket
HOST = ''
PORT = 50006
sock_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock_server.bind((HOST,PORT))
sock_server.listen(1)
conn,addr = sock_server.accept() while True:
data =conn.recv(1024)
if not data:break
conn.send(data)
3、双方都说话(TCP)
客户端:
import socket
HOST = 'localhost'
PORT = 50000
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((HOST,PORT))
while True:
cmd = input('>>').strip()
if not cmd:break
client.send(cmd.encode('utf-8')) data = client.recv(1024)
print('Received',data.decode('utf-8'))
服务端:
import socket
HOST = ''
PORT = 50000
sock_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock_server.bind((HOST,PORT))
sock_server.listen(1) while True:
conn, addr = sock_server.accept()
while True:
data =conn.recv(1024)
print(f"收到客户端的的数据:>{data.decode('utf-8')}")
if not data:break
response = input('回复客户端>>').strip()
conn.send(response.encode('utf-8'))
4、基于UDP协议实现
客户端:
import socket
ip_port = ('127.0.0.1',9000)
BUFSIZE = 1024
udp_client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) while True:
MSG = input('>>').strip()
udp_client.sendto(MSG.encode('utf-8'),ip_port)
back_msg,addr = udp_client.recvfrom(BUFSIZE)
print(back_msg.decode('utf-8'))
服务端:
import socket
ip_socket =('127.0.0.1',9000)
BUFSIZE = 1024
udp_server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udp_server.bind((ip_socket)) while True:
msg,addr = udp_server.recvfrom(BUFSIZE)
print(msg.decode('utf-8'),addr) response = input('>>').strip()
udp_server.sendto(response.encode('utf-8'),addr)
22 网络编程--TCP和UDP实现聊天例子的更多相关文章
- Socket网络编程TCP、UDP演示样例
Socket网络编程: 1) OSI(了解): 国际标准化组织ISO(International Orgnization for Standardization)指定了网络通信的模型:开放系统互联(O ...
- [网络编程] TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结
TCP.UDP都是属于运输层的协议,提供端到端的进程之间的逻辑通信,而IP协议(网络层)是提供主机间的逻辑通信,应用层规定应用进程在通信时所遵循的协议.一.UDP主要特点:传输的是用户数据报协议.1. ...
- python 网络编程 tcp和udp 协议
1. 网络通信协议 osi七层,tcp\ip五层 tcp\ip五层 arp协议:通过IP地址找到mac地址 2.tcp和udp的区别 tcp协议:面向连接,消息可靠,相对udp来讲,传输速度慢,消息是 ...
- 【Java网络编程】基于 UDP 的聊天通信
使用 udp 协议,写一个基于命令行的聊天软件:客户端跟服务端分别在命令行启动之后,客户端和服务器端可以互相发送数据. 代码实现如下: 一.创建线程 sendThread 和 receiveThrea ...
- 网络编程——TCP协议、UDP协议、socket套接字、粘包问题以及解决方法
网络编程--TCP协议.UDP协议.socket套接字.粘包问题以及解决方法 TCP协议(流式协议) 当应用程序想通过TCP协议实现远程通信时,彼此之间必须先建立双向通信通道,基于该双向通道实现数 ...
- 32.网络编程TCP/UDP服务
网络编程TCP: 服务器端口了解: port:0~65535 web服务:80 邮箱服务:556 0~1024:为服务默认的公认端口,一般我们不能用 套接字:socket socket作用 ip:po ...
- C++网络套接字编程TCP和UDP实例
原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang 1. 创建一个简单的SOCKET编程流程如下 面向有连接的套接字编程 服务器: 1) 创建套接字(so ...
- 网络编程TCP协议-聊天室
网络编程TCP协议-聊天室(客户端与服务端的交互); <span style="font-size:18px;">1.客户端发数据到服务端.</span> ...
- 网游中的网络编程3:在UDP上建立虚拟连接
目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网络编程3:在UDP上建立虚拟连接 TODO 二.在UDP上建立虚拟连接 介绍 UDP是无连接的,一 ...
随机推荐
- FastAdmin 开发环境详细设置
一图胜千言 FastAdmin开发环境 Windows 网页安装 鼠标点点就可以了,不用说明. 命令行安装 环境准备 装有 Windows 7 的PC .(这是一句废话,不用理这句.) 服务器软件 A ...
- velocity 知识点
velocity 教程: http://www.51gjie.com/javaweb/126 velocity 语法 语法 说明 关键字以#开头 定义数组 ['aaa','bbb'] 变量以$开头 把 ...
- websocket小体验
http://www.cnblogs.com/GoodHelper/p/7078381.html https://segmentfault.com/a/1190000012084213
- Kindle一周使用感受
为何选择Kindle 「Kindle」终于入手,心情十分愉悦^_^,入手的是499块「Kindle国行版」,个人感觉电子墨水屏显示效果很赞,很适合在光线比较充足的环境下阅读,即使在中午的阳光底下使用K ...
- 使用overflow:hidden之后使的同行元素不对齐
一个父元素(块级元素)中有几个在同一水平线上的几个元素(行内块元素),设置其中某个元素的oveflow:hidden之后,会导致这几个行内元素不再是同一水平线上对齐 原因是: 1)行内元素的默认ver ...
- h5 轻应用
http://www.html5tricks.com/ http://open.weibo.com/wiki/%E8%BD%BB%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91 ...
- Windows Phone Runtime Component 中的类型转换
Windows Phone Runtime Component 是Windows Phone 平台用来写C++类库的项目类型. 主要目的是让C#和C++进行互操作,引用历史的C++代码,保护知识产权, ...
- Java网络编程(读书笔记)
部分片段: 早期web服务器由于Http链接短暂而有所掩盖,由于web页面和嵌入式的图片一般很小(至少与通常通过FTP获取软件包要小很多),由于web浏览器在获取各个文件后挂起连接,而不是一次保持数分 ...
- php 表单提交方法
1.收集 HTML 表单提交的数据 ,PHP $_REQUEST 用于收集 HTML 表单提交的数据. <!DOCTYPE html><html><body> &l ...
- Java-Runoob-高级教程-实例-数组:07. Java 实例 – 数组合并
ylbtech-Java-Runoob-高级教程-实例-数组:07. Java 实例 – 数组合并 1.返回顶部 1. Java 实例 - 数组合并 Java 实例 以下实例演示了如何通过 List ...