实验环境: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. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path(Myeclipse添加Server Library)

    网上找练习的项目导入到myeclipse项目发现每个JSP 出现错误The superclass "javax.servlet.http.HttpServlet" was not ...

  2. Android仿今日头条手界面

    public class MyIndicator extends HorizontalScrollView implements ViewPager.OnPageChangeListener { pr ...

  3. PAT 1139 First Contact[难][模拟]

    1139 First Contact(30 分) Unlike in nowadays, the way that boys and girls expressing their feelings o ...

  4. 记一次mysql启动不了的问题

    在linux上用的是xampp,mysql启动没有报任何错误,但就是查找不到进程,于是找mysql错误日志,日志在哪?在lampp/var/mysql 以.err结尾的文件里.里面内容如下; /opt ...

  5. hdu 5017

    好恶心的题 #include <cstdio> #include <string.h> #include <algorithm> #include <cmat ...

  6. EditPlus 4.3.2477 中文版已经发布(11月3日更新)

    新的版本修复了之前版本文本库和自动完成功能中的“^!”符号在填充项前面时不能正常工作的问题.

  7. C++之路

    我学习C/C++也有两年了.开始是偏爱C语言和C++的语法特性强大,想用来做游戏开发.在深入学习的同时,逐渐了解到C++可以做很多事.大型项目需要用到运行效率高的C++,虽然运行效率越高,开发效率就要 ...

  8. scp命令简单应用

    实例1:从远处复制文件到本地目录 $scp root@10.6.159.147:/opt/soft/demo.tar /opt/soft/ 说明: 从10.6.159.147机器上的/opt/soft ...

  9. linux时区问题

    时区问题很麻烦- 0.查看时间命令 #date 查看系统时间 #date -s 修改时间,看下面的例子 #// (将系统日期设定为2014年07月16日) #:: (将系统时间设定为下午11::) # ...

  10. 前端学习笔记之CSS属性设置

    CSS属性设置   阅读目录 一 字体属性 二 文本属性 三 背景属性 四 盒子模型 五 盒子模型各部分详解 一 字体属性 1.font-weight:文字粗细 取值 描述 normal 默认值,标准 ...