socket(套接字),传输层通信的端点,由IP和端口号组成(IP,Port),可以通过socket精确地找到服务器上的进程并与之通信

python2.6实现,基于AF_INET(网络套接字)
类型SOCKET_STREAM(TCP套接字),SOCKET_DGRAM(UDP套接字)

TCP socket通信逻辑
TCP服务端:创建socket>>>绑定本地服务器>>>监听连接>>>通信交互>>>关闭连接
TCP客户端:创建socket>>>与服务器建立连接>>>通信交互>>>关闭连接

Python Tcp Socket服务端

     #!/usr/bin/python
#-*-coding:utf-8-*- # filename : Tdpsocket.py
# author :
# create date : 2015-03-25
# modify date :
# description : tcp socket #import stander lib
from socket import socket, AF_INET, SOCK_STREAM
import sys
sys.path.append( '..' ) class Tcpsocket():
'''
Tcpsocket类,建立tcp socket服务端,获得建立连接的配置信息
用法:
p = Tcpsocket.Tcpsocket()
p.listen()
无限循环监听端口,process重写数据处理方式
''' def __init__( self ):
'''
初始化,建立socket,ip端口绑定
'''
self.tcpServerSocket = socket( AF_INET, SOCK_STREAM ) #创建TCP socket
#端口号为0-65535,0-1023为系统保留,动态端口49152-65535,服务使用端口为1024-49151区间
self.tcpServerSocket.bind( ('127.0.0.1', 20015) )
self.tcpServerSocket.listen(5)
self.buffer_size = 1024 #缓冲区为1k def bulidConnect( self ):
'''
建立连接,获取连接客户端的信息,接收数据
'''
tcpClientSocket, addr = self.tcpServerSocket.accept()
print 'conn from : ', addr
raw_data = tcpClientSocket.recv( int(self.buffer_size) )
print 'receive data : ', raw_data return ( tcpClientSocket, raw_data ) def process( self, data ):
'''
socket传输的数据加工处理,继承重写该函数
'''
result = data
return result def send( self, tcp, result ):
'''
返回信息,关闭连接
'''
tcpClientSocket = tcp
tcpClientSocket.send( result )
tcpClientSocket.close() def listen( self ):
'''
监听端口,无限循环
'''
while True:
print 'wati for connect:'
socket_data = self.bulidConnect() #建立连接
result = self.process( socket_data[1] ) #接收信息,处理信息
self.send( socket_data[0], result ) #向客户端返回信息
self.close() def close( self ):
'''
关闭连接
'''
self.tcpServerSocket.close() def __del__( self ):
self.close() if __name__ == '__main__':
p = Tcpsocket()
p.listen()

Python Tcp Socket客户端

     import socket

     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ( '127.0.0.1', 20015 ) print 'Connecting to %s:%s.' % server_address
sock.connect(server_address) message = "I'm TCP client"
print 'Sending "%s".' % message sock.send( '[{"url":"www.baidu.com"}]' )
print 'receive from server : ', sock.recv(1024) sock.close()
print 'Closing socket.'

Python Tcp Socket的更多相关文章

  1. python tcp socket 多线程

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

  2. python TCP socket套接字编程以及注意事项

    TCPServer.py #coding:utf-8 import socket #s 等待链接 #c 实时通讯 s = socket.socket(socket.AF_INET,socket.SOC ...

  3. Java中使用Socket连接判断Inputstream结束,java tcp socket服务端,python tcp socket客户端

    最近在试着用java写一个socket的服务器,用python写一个socket的客户端来完成二者之间的通信,但是发现存在一个问题,服务器方面就卡在读取inputsream的地方不动了,导致后面的代码 ...

  4. 【Python】TCP Socket的粘包和分包的处理

    Reference: http://blog.csdn.net/yannanxiu/article/details/52096465 概述 在进行TCP Socket开发时,都需要处理数据包粘包和分包 ...

  5. 计算机网络:套接字(Socket)| Python socket实现服务器端与客户端通信,使用TCP socket阿里云ECS服务器与本机通信

    所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象.一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制.从所处的地位来讲,套接字上联应 ...

  6. Python底层socket库

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

  7. [python]初探socket

    1.什么是socket? Socket中文译作:套接字,但是大家一般约定俗称的都用:socket.我想在解释socket是什么之前,先说它是用来干嘛的:socket是来建立'通信'的基础,建立连接,传 ...

  8. 转:Python 的 Socket 编程教程

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

  9. Python Udp Socket

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

随机推荐

  1. C语言初学 简单定义圆的面积计算问题

    #include<stdio.h> #define PI 3.14159 main() { double a; scanf("%lf",&a); printf( ...

  2. [SQL注入1]From SQL injection to Shell

    第一次写,希望大神们多指点. 对于刚接触WEB渗透测试这块的朋友们,很希望能有个平台可以练习.网络上有不少,十大渗透测试演练系统,我这里推荐一个在10以外,适合初学者一步一步进步的平台PENTESTE ...

  3. cf B. The Fibonacci Segment

    http://codeforces.com/contest/365/problem/B #include <cstdio> #include <cstring> #includ ...

  4. Unity欢迎窗口的信息

    1.Video Tutorials提供Unity相关的教程,包括用户手册.组件手册以及脚本手册等内容.2.Unity Basics提供Unity的基础知识,例如操作界面.工作流程.发布设置等内容.3. ...

  5. Qt在Mac OS X下的编程环境搭建

    尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...

  6. 各类XML parser的比较

    基于以上的比较 再为公司的项目选择解析器的时候,我选择Xerces.准备把Qt自带的XML库给去掉. references: http://stackoverflow.com/questions/17 ...

  7. 初识Mybatis框架,实现增删改查等操作

    此第一次接触Mybatis框架确实是有点不适应,特别是刚从Hibernate框架转转型过来,那么为什么要使用Mybatis框架,Mybatis框架和Hibernate框架又有什么异同呢? 这个问题在我 ...

  8. Java使用线程池递归压缩文件夹下面的所有子文件

    本文将介绍Java中利用线程池递归的方式压缩文件夹下面的所有子文件,具体方法如下: Gzip单个文件压缩 对于单个文件使用GZip压缩. package date0805.demo1; import ...

  9. (转)iOS7界面设计规范(12) - UI基础 - 品牌

    重要:这是针对于正在开发中的API或技术的预备文档(预发布版本).虽然该文档在技术精确度上经过了严格的审核,但并非最终版本,仅供苹果开发者计划的注册会员使用.苹果提供这份机要文档的目的,是帮助你按照文 ...

  10. BootStrap学习之先导篇——响应式网页

    Bootstrap学习之前,要知道响应式网页的原理. 1.什么是响应式网页? 一个页面,可以根据浏览设备的不同,以及特性的不同,而自动改变布局.大小等.使得在不同的设备上上都可以呈现优秀的界面. 优点 ...