socket,它最初做为BSD UNIX的进程通信机制,通常被称做"套接字",如今已经成为windows和mac等其它操作系统所共同遵守的网络编程标准。

socket使用ip+端口+协议的三组组合,来标识一个通信链路。

一、socket 的TCP

Server端代码:

#!/usr/bin/python
# -*- coding: utf- -*-
import socket
import datetime HOST = '0.0.0.0'
PORT = # AF_INET ipv4, SOCK_STREAM tcp
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 第一步:建立sockeet
s.bind((HOST, PORT)) # 第二步:绑定 服务器及端口
s.listen() # 第三步:监听(允许5个并发accept) while True:
conn, addr = s.accept() # 第四步:等待接收客户端连接
print 'Client %s connected!' % str(addr) # 输出客户端的连接
dt = datetime.datetime.now()
msg = "Current time is " + str(dt)
conn.send(msg) # 第五步:接收或发送数据(自动给连接的客户端发送数据)
print "Send:", msg
conn.close() # 第六步:关闭连接

Client端代码:

#!/usr/bin/python
# -*- coding: utf- -*-
import socket HOST = 'xx.xx.xx.244' # server端ip
PORT = # # AF_INET ipv4, SOCK_STREAM tcp
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 第一步:建立socket
s.connect((HOST, PORT)) # 第二步:连接服务器
print "Connect %s:%s"%(HOST, PORT)
data = s.recv() # 第三步:收发数据(从服务器接收数据)
print "Received:", data
s.close() # 第四步:关闭连接

执行结果:

二、socket UDP
UDP相对于TCP没有建立连接、监听、断开连接等概念,UDP有独属于自己的语法 :
recvfrom():从绑定的地址接收数据
sendto():向指定的地址发送数据 Server端:
#!/usr/bin/python
# -*- coding: utf- -*-
import socket HOST = '0.0.0.0'
PORT = # AF_INET ipv4, SOCK_DGRAM udp
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 第一步:建立socket对象
s.bind((HOST, PORT)) # 第二步:绑定 服务器及端口 while True:
data, addr = s.recvfrom() # 第三步:接收客户端发送来的消息
print "Recevied: %s from %s"%(data, str(addr)) s.close() # 第四步:关闭连接

Client端:

#!/usr/bin/python
# -*- coding: utf- -*-
import socket HOST = '47.94.57.244'
PORT = # AF_INET ipv4, SOCK_DGRAM udp
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 第一步:建立socket
data = "UDP DATA from client.."
s.sendto(data, (HOST, PORT)) # 第二步:给服务端发送数据
print "Send:%s to %s:%s"%(data, HOST, str(PORT))
s.close() # 第三步:关闭连接

其它参考:

https://www.cnblogs.com/aylin/p/5572104.html

												

python 之socket的更多相关文章

  1. 进击的Python【第十章】:Python的socket高级应用(多进程,协程与异步)

    Python的socket高级应用(多进程,协程与异步)

  2. Python底层socket库

    Python底层socket库将Unix关于网络通信的系统调用对象化处理,是底层函数的高级封装,socket()函数返回一个套接字,它的方法实现了各种套接字系统调用.read与write与Python ...

  3. 转:Python 的 Socket 编程教程

    这是用来快速学习 Python Socket 套接字编程的指南和教程.Python 的 Socket 编程跟 C 语言很像. Python 官方关于 Socket 的函数请看 http://docs. ...

  4. Python Udp Socket

    socket(套接字),传输层通信的端点,由IP和端口号组成(IP,Port),可以通过socket精确地找到服务器上的进程并与之通信 python2.6实现,基于AF_INET(网络套接字) 类型S ...

  5. Python Tcp Socket

    socket(套接字),传输层通信的端点,由IP和端口号组成(IP,Port),可以通过socket精确地找到服务器上的进程并与之通信 python2.6实现,基于AF_INET(网络套接字) 类型S ...

  6. Python 之socket的应用

    本节主要讲解socket编程的有关知识点,顺便也会讲解一些其它的关联性知识: 一.概述(socket.socketserver): python对于socket编程,提供了两个模块,分别是socket ...

  7. python tcp socket 多线程

    不多说,直接上代码 client.py #!/usr/bin/python import socket,sys,string host="localhost" port=8000 ...

  8. 老李分享:使用 Python 的 Socket 模块开发 UDP 扫描工具

    老李分享:使用 Python 的 Socket 模块开发 UDP 扫描工具 poptest是业内唯一的测试开发工程师培训机构,测试开发工程师主要是为测试服务开发测试工具,在工作中要求你做网络级别的安全 ...

  9. 操作系统底层原理与Python中socket解读

    目录 操作系统底层原理 网络通信原理 网络基础架构 局域网与交换机/网络常见术语 OSI七层协议 TCP/IP五层模型讲解 Python中Socket模块解读 TCP协议和UDP协议 操作系统底层原理 ...

  10. python中socket模块详解

    socket模块简介 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.socket通常被叫做"套接字",用于描述IP地址和端口,是一个通信 ...

随机推荐

  1. 浏览器对CSS小数点的解析——坑

    在写移动端项目时,为了将一个元素垂直居中,于是我将元素的高和行高设置成一样的,但是显示出来的结果,却让人不得其解,如下: 可以看到按钮的底部有一条缝隙,一开始以为是代码写错了,于是检查了一下,发现没啥 ...

  2. mysql sql语句最大长度设置方法

    今天发现了一个错误:Could not execute JDBC batch update 最后发现原因是SQL语句长度大于1M,而我机器上的mysql是默认设置,也就是说mysql通讯的数据包大小设 ...

  3. Java反射机制二 获取方法的返回值或参数的泛型信息

    在使用反射机制时,我们经常需要知道方法的参数和返回值类型,很简单  ,下面上示例,示例中的两个方法非常相似 package deadLockThread; import java.lang.refle ...

  4. IDA动态调试so文件出现SIGILL

    用ida6.6 调试android的so文件时经常会报SIGILL的错误,意思是指令非法.而且这种错误基本都是发生在系统函数内部,像我遇到过的mmap,fopen,fgets等等.在这些函数内部如果用 ...

  5. Python代码注释应该怎么写?

    https://zhuanlan.zhihu.com/p/22663276?refer=passer http://zh-google-styleguide.readthedocs.io/en/lat ...

  6. Java 8 新特性-菜鸟教程 (4) -Java 8 默认方法

    Java 8 默认方法 Java 8 新增了接口的默认方法. 简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法. 我们只需在方法名前面加个default关键字即可实现默认方法. 为 ...

  7. ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(1)

    文章转自:http://www.xuboyi.com/298.html 前言 网站运营有一段时间了,记录的内容都是杂七杂八的,思前想后,决定给大家分享一套ASP.Net的系列教程.手把手的做一套通用后 ...

  8. es6学习笔记11--Proxy和Reflect

    Proxy概述 Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程. Proxy可以理解成,在目标对象之前 ...

  9. Python时间系统

    Python的time和datetime模块提供了时间日期工具, python中的时间有4种表示方式: datetime obj time obj/tuple posix timestamp time ...

  10. [转]magento2项目上线注意事项 切换到产品模式

    本文转自:https://segmentfault.com/a/1190000007929783 切换到产品模式 php magento deploy:mode:set production 执行以上 ...