实验环境: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)的更多相关文章

  1. python 网络编程 tcp和udp 协议

    1. 网络通信协议 osi七层,tcp\ip五层 tcp\ip五层 arp协议:通过IP地址找到mac地址 2.tcp和udp的区别 tcp协议:面向连接,消息可靠,相对udp来讲,传输速度慢,消息是 ...

  2. Python中Socket编程(TCP、UDP)

    1. TCP协议下的如何解决粘包问题 TCP(transport control protocol 传输控制协议)  使用Nagle算法,将多次间隔较小且数据量小的数据,合并成大的数据块:接受端无法识 ...

  3. python/socket编程之粘包

    python/socket编程之粘包 粘包 只有TCP有粘包现象,UDP永远不会粘包. 首先需要掌握一个socket收发消息的原理 发送端可以是1k,1k的发送数据而接受端的应用程序可以2k,2k的提 ...

  4. PYTHON SOCKET编程简介

    原文地址: PYTHON SOCKET编程详细介绍   Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 Soc ...

  5. [Python_7] Python Socket 编程

    0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*- "&q ...

  6. python socket编程入门(编写server实例)+send 与sendall的区别与使用方法

    python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...

  7. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  8. C++网络套接字编程TCP和UDP实例

    原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang 1.       创建一个简单的SOCKET编程流程如下 面向有连接的套接字编程 服务器: 1)  创建套接字(so ...

  9. socket、tcp、udp、http 的认识及区别

    一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输 ...

  10. Python Socket 编程示例 Echo Server

    简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...

随机推荐

  1. Python爬虫实例(五) requests+flask构建自己的电影库

    目标任务:使用requests抓取电影网站信息和下载链接保存到数据库中,然后使用flask做数据展示. 爬取的网站在这里 最终效果如下: 主页: 可以进行搜索:输入水形物语 点击标题进入详情页: 爬虫 ...

  2. CTE的妙用

    转自:https://blog.csdn.net/kk185800961/article/details/42535223 之前在2本书看到过with as 子句的一个简单例子,网上没找到相关资料. ...

  3. HTML---初识HTML

    版权声明:本文为博主原创文章.不经博主同意注明链接就可以转载. https://blog.csdn.net/Senior_lee/article/details/33723573          H ...

  4. CSS伪代码

    /*在p之后插入我是好人*/ p.first:after { content: "好人" } /*在p之前插入亲爱的朋友men*/ p:before { content: &quo ...

  5. django需要了解的

    搞得差不多就去看看类和对象,看看oop是什么,多用lambda,学学md5加密. 你应当了解,django不是服务器,只提供服务.因此,学习nginx.或是apache是必要的.(IIS不了解,不过题 ...

  6. VS2010/MFC编程入门之十二(对话框:非模态对话框的创建及显示)

    上一节鸡啄米讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 鸡啄米已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切换.鸡啄米会将 ...

  7. ZW团队:IN_OUT传播模型简介

    传统媒体,网络媒体的整合推广,我曾经提出过一个:Tn-Out模式 In-Out是NBA的篮球术语,你自己百度下 传统媒体承担"IN"的角色,负责传播的深度和建立公信力 网络媒体充当 ...

  8. hdu 5111 树链剖分加函数式线段树

    这题说的是给了两棵树,各有100000 个节点,然后Q个操作Q<=50000; 每个操作L1 R1 L2 R2.因为对于每棵树都有一个与本棵树其他点与众不同的值, 最后问 在树上从L1到R1这条 ...

  9. MySQL从删库到跑路(一)——MySQL数据库简介

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.MySQL简介 1.MySQL简介 MySQL是一个轻量级关系型数据库管理系统,由瑞典MySQL AB公司开发, ...

  10. HTTP从入门到入土(4)——URI、URL和URN

    URI URI全称:Uniform Resource Identifier,中文名为统一资源标识符.用来标识唯一标识互联网上的信息资源. Web上可用的所有资源,比如html.图像.视频等,都是由UR ...