摘抄自:廖雪峰的官方网站:http://www.liaoxuefeng.com/

TCP客户端和服务器端代码:


#coding=utf-8
#客户端程序TCP 连接 import socket s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('127.0.0.1',9999)) print(s.recv(1024)) for data in ['Michael','Tracy','Sarah']:
s.send(data.encode())
print(s.recv(1024)) s.send(b'exit')
#coding=utf-8
#TCP服务器端程序
import socket
import time
import threading def tcplink(sock,addr):
print("accept new connection from %s:%s..." % addr)
sock.send("Welcom!".encode())
while True:
data=sock.recv(1024)
time.sleep(1)
if data=='exit' or not data:
break
sock.send("hello: ".encode()+data)
sock.close()
print("Connection from %s:%s closed." % addr) s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 创建一个基于ipv4 的TCP协议的socket s.bind(('127.0.0.1',9999)) #监听端口 s.listen(5)
print("Waiting for connection......") while True:
sock,addr=s.accept()
t=threading.Thread(target=tcplink,args=(sock, addr))
t.start()

运行结果:

Waiting for connection......
accept new connection from 127.0.0.1:60218...
Connection from 127.0.0.1:60218 closed.
b'Welcom!'
b'hello: Michael'
b'hello: Tracy'
b'hello: Sarah'

UDP客户端和服务器端代码:


#coding=utf-8
#UDP 客户端代码 import socket s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) for data in ["chenshan","yuanhui","chendianqiang"]:
s.sendto(data.encode(),('127.0.0.1',9999))
print(s.recv(1024)) s.close()
#coding=utf-8
#UDP 协议服务器代码
import socket s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.bind(('127.0.0.1',9999))
print("Bind UDP on prot:9999") while True:
data,addr=s.recvfrom(1024)
print("Receive from %s:%s"% addr)
s.sendto("Hello ".encode()+data,addr)

运行结果:

Bind UDP on prot:9999
b'Hello chenshan'
b'Hello yuanhui'
b'Hello chendianqiang'

python 网络编程-TCP/UDP的更多相关文章

  1. python 网络编程 TCP/IP socket UDP

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  2. 32.网络编程TCP/UDP服务

    网络编程TCP: 服务器端口了解: port:0~65535 web服务:80 邮箱服务:556 0~1024:为服务默认的公认端口,一般我们不能用 套接字:socket socket作用 ip:po ...

  3. python网络编程——使用UDP、TCP协议收发信息

    UDP UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送. UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内. UDP ...

  4. python网络编程 - tcp

    网络编程 低级别的网络服务 高级别的网络服务 socket又称“套接字”,应用程序通过“套接字”向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. tcp 传输控制协议(Tra ...

  5. java 网络编程-tcp/udp

    --转自:http://blog.csdn.net/nyzhl/article/details/1705039 直接把代码写在这里,解释看这里吧:http://blog.csdn.net/nyzhl/ ...

  6. Python 网络通信协议 tcp udp区别

    网络通信的整个流程 在这一节就给大家讲解,有些同学对网络是既熟悉又陌生,熟悉是因为我们都知道,我们安装一个路由器,拉一个网线,或者用无限路由器,连上网线或者连上wifi就能够上网购物.看片片.吃鸡了, ...

  7. iOS 网络编程 TCP/UDP HTTP

    一.HTTP协议的主要特点: 1. CS模式 2. 简单快速:只需要传送请求方法和路径.(常用方法有GET,HEAD,POST) 3. 灵活:任意对象都可以,类型由Content-Type加以标记 4 ...

  8. 28_网络编程-TCP/UDP

    一.传输层       1.定义       IP首部有一个协议字段,用来标识网络层(IP)的上一层所采用的是哪一种传输层协议.根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP的内容还是 ...

  9. python 网络编程 -- Tcp协议

    Socket是网络编程的一个抽象概念.通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 客户端 大多数连接都是可靠 ...

随机推荐

  1. NASM编译器的$和$$标记

    NASM中的times相当于MASM中的dup起到重复定义的作用. $表示当前行的偏移地址,$$表示当前段的起始偏移地址, ;------------------------------------- ...

  2. jquery图片轮播,单张图片轮播时间不同

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Windows2008下搭建NFS实现windows空间提供linux使用

    我们既然是要把Windows 的硬盘给Linux使用  就需要在Windows上安装NFS网络文件系统 操作如下 1.添加角色-----文件服务---勾选网络文件服务 2.安装完成后 我们需要把这30 ...

  4. subpage和secondary page的区别

    Hi,  Can you tell me the differences between subpage and secondary  page and when to use which ? I n ...

  5. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名

    例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php function getExt($url){ $arr=parse_url( ...

  6. 添加常驻Notification

    private static final int NOTIFICATION_ID=250; //用来标示notification,通过notificatinomanager来发布同样标示的notifi ...

  7. 生产WCF客户端类文件的命令格式

    生产WCF客户端类文件的命令格式: svcutil.exe net.tcp://127.0.0.1:8732/ChromaMI.Remote.ConfigService/RemoteConfigSer ...

  8. 访问svc 文件,编译器错误消息: CS0016,未能写入输出文件

    编译错误              说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码.             编译器错误消息: CS0016: 未 ...

  9. programming ruby

    ri #rdoc reader attr_reader attr_writer @@xx 类变量都是私有的 def 类名.xx end 类方法 [1,3,5,7].inject(0){|sum,e| ...

  10. 同时执行2个存储过程,2个SP中分别有相同的临时表名,会有冲突吗?

    同时执行2个存储过程,2个SP中分别有相同的临时表名,会有冲突吗?答案:不会 这就可以在以后写存储过程的时候统一临时表名了. alter procedure sp_01 as begin create ...