python socket 编程(TCP与UDP)
实验环境:python2
一、TCP编程
1.建立TCP服务器
①创建TCPServer.py文件
②编写服务器代码
1)创建socket对象,调用socket构造函数
2)绑定ip端口(IP号和端口号)
3)设置最大连接数(准备套接字,以便接受连接请求)
4)使用socket的accept()方法等待客户请求一个链接
5)获取客户请求数据
6)关闭连接
代码如下:
#TCPServer.py
#!/usr/bin/env python #from socket import *
import socket
#开启ip和端口
ip_port = ('127.0.0.1',9999) #1.生成一个句柄(创建socket对象,调用socket构造函数)
sk = socket.socket()
#2.绑定ip端口(ip和端口号)
sk.bind(ip_port)
#3.最多连接数(准备套接字,以便接受连接请求)
sk.listen(5)
#开启死循环
print ('server waiting...')
#等待链接,阻塞,直到渠道链接 conn打开一个新的对象
#专门给当前链接的客户端 addr是ip地址
#4.服务器套接字通过socket的accept()方法等待客户请求一个链接
conn,addr = sk.accept()
#5.获取客户端请求数据
print('successful link,the client address:')
print(addr)
while True: client_data = conn.recv(1024)
#打印对方的数据 print ('receive Clinet Data-> '+client_data) if client_data=='q': break #如果lient_data为空,则跳出循环 #向对方发送数据
conn.send(bytes('client,I\'m server')) #关闭链接
conn.close()
sk.close()

2.建立TCP客户端
①创建TCPclient.py文件
②编写客户端代码
1)连接服务端ip和端口
2)生成套接字
3)请求连接服务端
4)发送数据,接受数据
5)关闭连接
#TCPClient.py import socket
#连接服务端ip和端口
ip_port = ('127.0.0.1',9999)
#生成一个句柄
sk = socket.socket()
#请求连接服务端
sk.connect(ip_port) while True:
msg = raw_input('Please Input Message:\n') #发送数据
sk.sendall((msg)) if msg=='q': break #如果msg为空,则跳出循环 #接收数据
server_reply = sk.recv(1024)
if not server_reply: break
#打印接收到的数据
print (str(server_reply)) #关闭连接
sk.close()

3.实现服务端-客户端通讯
①运行TCPServer.py
②运行TCPclient.py
③由客户端向服务端发送消息
运行截图如下:

二、UDP编程
1.建立UDP服务器
①创建UDPServer.py文件
②编写服务器代码
1)创建socket对象,调用socket()构造函数UDP需要加参数
2)绑定IP和端口号
3)通讯阶段
4)关闭连接
代码如下:
#UDPServer.py
#!/usr/bin/env python from socket import * HOST = 'localhost'
PORT = 9993 s = socket(AF_INET,SOCK_DGRAM)
s.bind((HOST,PORT))
print '...waiting for message..'
while True:
data,address = s.recvfrom(1024)
print address,data
s.sendto('this is the UDP server',address)
s.close()

2.建立UDP客户端
①创建UDPClient.py文件
②编写UDP客户端代码
1)创建一个socket以连接服务器
2)使用socket的connect()方法连接服务器
3)通过sendto()和recvfrom()方法通信
4)关闭连接
代码如下:
#UDPClient.py
from socket import * HOST='localhost'
PORT=9993
address=(HOST,PORT)
s = socket(AF_INET,SOCK_DGRAM) while True:
message = raw_input('send message:>>')
s.sendto(message,address)
data = s.recvfrom(1024)
print data
s.close()

3.运行客户端-服务端实现通讯

三、结束语
至此使用python-socket编程的TCP和UDP编程已演示结束。
谢谢!
python socket 编程(TCP与UDP)的更多相关文章
- python 网络编程 tcp和udp 协议
1. 网络通信协议 osi七层,tcp\ip五层 tcp\ip五层 arp协议:通过IP地址找到mac地址 2.tcp和udp的区别 tcp协议:面向连接,消息可靠,相对udp来讲,传输速度慢,消息是 ...
- Python中Socket编程(TCP、UDP)
1. TCP协议下的如何解决粘包问题 TCP(transport control protocol 传输控制协议) 使用Nagle算法,将多次间隔较小且数据量小的数据,合并成大的数据块:接受端无法识 ...
- python/socket编程之粘包
python/socket编程之粘包 粘包 只有TCP有粘包现象,UDP永远不会粘包. 首先需要掌握一个socket收发消息的原理 发送端可以是1k,1k的发送数据而接受端的应用程序可以2k,2k的提 ...
- PYTHON SOCKET编程简介
原文地址: PYTHON SOCKET编程详细介绍 Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 Soc ...
- [Python_7] Python Socket 编程
0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*- "&q ...
- python socket编程入门(编写server实例)+send 与sendall的区别与使用方法
python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- C++网络套接字编程TCP和UDP实例
原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang 1. 创建一个简单的SOCKET编程流程如下 面向有连接的套接字编程 服务器: 1) 创建套接字(so ...
- socket、tcp、udp、http 的认识及区别
一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输 ...
- Python Socket 编程示例 Echo Server
简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...
随机推荐
- 热力图实现-heatmap.js 代码示例
Heatmap.js – 最强大的 Web 动态热图 最新公司项目需要用到热力图,在百度上搜下,了解到heatmap.js这款神器.然后搜了下例子,却很难搜到马上出效果的例子,特此写一篇heatma ...
- 优云老王的心路历程(二):下一站Web体验监控产品
在上一篇文章中,和大家聊到了建立Web应用体验监控体系,经过了概念阶段,也完成了技术选型,就进入了把实质性的产品研发阶段.作为产品经理,时刻不敢忘记我们的产品目标:无限感知你的用户,建立完备的体验监控 ...
- 双态运维:如何让CMDB配置维护更贴近人性
近来很多行业内的大佬关于CMDB连连发声,CMDB的关注度持续高涨,CMDB的前生就是长满雀斑的丑媳妇,扭扭捏捏不受待见这么多年,终于熬出头要见公婆了.哎,她的贤惠谁能懂? 言归正传,在拜读了多篇大牛 ...
- 第1章 1.2计算机网络概述--Intenet和广域网
1.ISP Internet服务提供商,也称ISP运营商.如:在中国,电信.网通.长城宽带. ISP运营商内部的网络连接十分发达,但是不同ISP运营商之间的连接的线路非常有限,这就导致了跨运营商访问网 ...
- IOS 自己定义UITableView
依据不同须要,须要使用tableview的结构,可是里面每个cell,又须要自己的样式.所以学习了一下如何把自定义的cell加到tableview里面 首先要自己创建一个类,继承UITableView ...
- Cardano(ADA), EOS, RChain(RHOC), Aeternity(AE) 都是极其好的币
从区块链的基础知识出发,研究ETH和EOS的区别 免责声明:EOS目前还在开发中,我们对此项目的一些理解可能会改变.而且,我并不是以太坊开发者,而只是一个喜欢区块链的爱好者.请牢记这两点,请把下面的内 ...
- django之中间件、缓存、信号、admin内置后台
目录: 中间件 缓存 信号 admin后台 一.中间件 1.什么是中间件? 中间件是一个.一个的管道,如果相对任何所有的通过Django的请求进行管理都需要自定义中间件 中间件可以对进来的请求和出去的 ...
- Spark2.0 shuffle service
Spark 的shuffle 服务是spark的核心,本文介绍了非ExternalShuffleClient的方式,看BlockService的整个架构.ShuffleClient是整个框架的基础,有 ...
- #C++初学记录
输入与输出,头文件. #include<iostream> #include<algorithm> using namespace std; int main() { char ...
- Keras实践:模型可视化
Keras实践:模型可视化 安装Graphviz 官方网址为:http://www.graphviz.org/.我使用的是mac系统,所以我分享一下我使用时遇到的坑. Mac安装时在终端中执行: br ...