创建套接字:

socket.socket(family,type[,protocal])

使用给定的地址族、套接字类型、协议编号(默认为0)来创建套接字。

1. socket类型:

socket.AF_UNIX:只能够用于单一的Unix系统进程间通信

socket.AF_INET:服务器之间网络通信

socket.AF_INET6:IPv6

socket.SOCK_STREAM:流式socket,for TCP

socket.SOCK_DGRAM:数据报式socket,for UDP

socket.RAW:原始套接字。利用原始套接字:

  • 可以处理普通的套接字无法处理的ICMP、IGMP等网络报文;
  • 可以处理特殊的IPv4报文;
  • 可以通过IP_HDRINCL套接字选项由用户构造IP头

socket.SOCK_SEQPACKET:可靠的连续数据包服务

例如:

创建TCP socket: s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

创建UDP socket: s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

2. socket函数

服务器函数:

s.bind(address):将套接字绑定到地址,在AF_INET下,以元祖(host,port)的形式表现地址

s.listen(backlog):开始监听TCP连接。backlog指定在拒绝连接之前,操作系统可以挂起的最大连接数。至少为1

s.accept():接收TCP连接并返回(conn,address),其中conn是新的套接字对象,可以用来接收和发生数据。address是连接客户端的地址。

客户端函数:

s.connect(address):连接到address处的套接字。一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误

s.connect_ex(address):功能与connect(address)相同,但是成功返回0,失败返回errno的值

公共函数:

s.recv(bufsize[,flag]):接收TCP套接字的数据。数据以字符串形式返回,bufsize指定要接收的最大数据量。flag提供有关消息的其他消息,常忽略

s.send(string[,flag]):发送TCP数据。将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小

s.sendall(string[,flag]):完整发送TCP数据。将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常

s.recvfrom(bufsize[,flag]):接收UDP套接字的数据。与recv()类似,但返回值是(data,address)。其中data是包含接收数据的字符串,address是发送数据的套接字地址

s.sendto(string[,flag],adress):发送UDP数据。将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数

s.close():关闭套接字

3. 实例

Server:

 #-*- coding: UTF-8 -*-

 __author__ = ''
__date__ = '2016/1/27' import socket HOST,PORT = '',8888 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((HOST,PORT))
s.listen(1)
print "Serving HTTP on host %s..." % HOST
print "Serving HTTP on port %s..." % PORT while True:
client_conn,client_addr = s.accept()
request = client_conn.recv(1024)
print request
http_response = """
HTTP/1.1 200 OK Hello C!
"""
print client_conn.sendall(http_response) client_conn.close()

运行:

E:\Py\testing>python module/sock-s.py
Serving HTTP on host ...
Serving HTTP on port 8888..

WEB浏览器:

TCP连接成功,正常会话!

telnet会话:

telnet 127.0.0.1 8888

Client:

 #-*- coding: UTF-8 -*-

 __author__ = ''
__date__ = '2016/1/27' import socket s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(("127.0.0.1",8888))
s.send("Hello S")
print s.recv(1024) s.close()

运行:

E:\Py\testing>python module/sock-c.py

HTTP/1.1 200 OK

Hello C!

python模块—socket的更多相关文章

  1. Python模块 Socket

    一个简单的python socket编程 一.套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并 ...

  2. python模块——socket (实现简单的C/S架构端通信操作CMD)

    # 服务端代码#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = "loki" import socket impo ...

  3. python模块——socket

    实例一. server: #socket套接字(IP + 端口号)(qq,wechat 发送接收消息依靠socket模块),cs架构import socketserver = socket.socke ...

  4. python模块之socket

    43.python模块之socket:       Python在网络通讯方面功能强大,学习一下Socket通讯的基本方式 UDP通讯: Server: import socket port=8081 ...

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

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

  6. python中socket模块详解

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

  7. Python基于socket模块实现UDP通信功能示例

    Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端     import ...

  8. 使用 Python 的 Socket 模块构建一个 UDP 扫描工具

    译文:oschina 英文:bt3gl 当涉及到对一些目标网络的侦察时,出发点无疑是首先发现宿主主机.这个任务还可能包含嗅探和解析网络中数据包的能力. 几周前,我曾经谈到了如何使用Wireshark来 ...

  9. Python底层socket库

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

随机推荐

  1. SpringMVC(三) —— 参数绑定和数据回显

    参数绑定的过程:就是页面向后台传递参数,后台接受的一个过程. 默认支持的参数类型:(就是你在方法上以形参的形式去定义一下的类型,就可以直接使用它) HttpServletRequest HttpSer ...

  2. SVN提交出现“< < < < < < < .mine’无效,路径中具有非法字符”的问题

    使用SVN提交或更新后经常会出现”Files 的值’< < < < < < < .mine’无效.路径中具有非法字符”的错误.查阅了下资料,是因为:你更改了一 ...

  3. PS切图保存后的背景图为透明

    1.若想PS切图保存后的背景图为透明,那么则需要在如下图中所示的修改即可,切图后[文件]——>[存储为web格式]——>[PNG-24]: 2.要想在css中的背景图片为相通,则先剪切一个 ...

  4. MFC中SQLite数据库的使用

    1打开数据库 BOOL playDlg::openData() { WCHAR a[100]; CString path; path = m_exePath+L"sentence_makin ...

  5. usb驱动开发篇简易介绍

    我这里重点的介绍如何写驱动程序,对于一些应用程序我就不做介绍了,因为我对于那些高层的东西写得很少.倘若再讲,有班门弄斧之嫌,呵呵! 作为WIN98和WIN2K推荐的一项新技术来说,USB的驱动程序和以 ...

  6. editplus使用:非法字符: \65279

    众所周知,在跨程序的工程中,统一编码是至关重要的,而目前最普遍的则是统一采用“utf8”编码方案. 但是在采用utf8方案的时候,请注意编辑器的自作聪明. 比如editplus. 原因就在于某些编辑器 ...

  7. POJ 3579 Median(二分答案+Two pointers)

    [题目链接] http://poj.org/problem?id=3579 [题目大意] 给出一个数列,求两两差值绝对值的中位数. [题解] 因为如果直接计算中位数的话,数量过于庞大,难以有效计算, ...

  8. XMPP iOS开发(IM开发,转)

    搭建完本地服务器之后,我们便可以着手客户端的工作,这里我们使用XMPPFramework这个开源库,安卓平台可以使用Smack(最好使用4.1以及之后的版本,支持流管理),为了简单起见这里只实现登陆. ...

  9. Asp.net SqlDataReader转成Datatable

    Asp.net SqlDataReader转成Datatable 所属栏目:Asp.net 编程 | 发布日期:2013年04月05日 | 点击:517 次 内容摘要:Asp.net 数据存储,呈现方 ...

  10. 利用PowerDesigner15在win7系统下对MySQL 进行反向project(二)

    利用PowerDesigner15在win7系统下对MySQL 进行反向project 1.打开PowerDesigner,建立新模型.选择Physical Data Model中的Physical ...