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. iOS平台在ffmpeg中使用librtmp

    转载请注明出处:http://www.cnblogs.com/fpzeng/p/3202344.html 系统版本:OS X 10.8 一.在iOS平台上交叉编译librtmp librtmp lin ...

  2. 使用脚本管理IIS

    参考资料https://technet.microsoft.com/zh-cn/library/cc779108(WS.10).aspxhttps://technet.microsoft.com/zh ...

  3. windows 挂载linux nfs

    windwos挂载linux主机NFS 启动windos NFS客户端服务: 1. 打开控制面板->程序->打开或关闭windows功能->NFS客户端 勾选NFS客户端,即开启wi ...

  4. 【转】 ubuntu12.04更新源

    原文网址:http://blog.chinaunix.net/uid-26404477-id-3382633.html 摘 要:本文列出ubuntu 12.04 LTS更新源列表,内容为网友整理,此处 ...

  5. cf493A Vasya and Football

    A. Vasya and Football time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  6. Git 2.7: 一个新的带来许多新特性和性能提升的主要版本

    在2.6版本发布两个月之后,Git 2.7发布.该版本带来了许多新特性以及性能的提升. 本文选取了Git 2.7带来的主要变化: git remote支持get-url子命令,可以显示指定远端的URL ...

  7. python3-day3(函数-返回值)

    1.函数 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 2.return返回值 import smtplibfro ...

  8. css中的列表样式

    在网页设计中,我们经常将某些具有相似功能的标签放在同一组中,这时我们经常会用到列表标签(无序列表ul,有序列表ol),在列表标签中对列表样式的设计可以使我们的页面得到一定程度的美化. 在css中对列表 ...

  9. nyist 82迷宫寻宝(一)(BFS)

    题目连接:http://acm.nyist.net/JudgeOnline/problem.php?pid=82 此题在基础BFS上加入了门和钥匙,要找齐所有钥匙才能开门,所以要对门特殊处理. 1.先 ...

  10. C/C++笔试准备(2)

    问题:编辑距离,是指将一个字符串变为另一个字符串,仅可以3种操作:修改一个字符,删除一个字符,插入一个字符.the变成that:删除e,插入a,插入t.20’ 实现编辑距离算法. 解算:利用动态规划的 ...