Python Tcp Socket
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的更多相关文章
- python tcp socket 多线程
不多说,直接上代码 client.py #!/usr/bin/python import socket,sys,string host="localhost" port=8000 ...
- python TCP socket套接字编程以及注意事项
TCPServer.py #coding:utf-8 import socket #s 等待链接 #c 实时通讯 s = socket.socket(socket.AF_INET,socket.SOC ...
- Java中使用Socket连接判断Inputstream结束,java tcp socket服务端,python tcp socket客户端
最近在试着用java写一个socket的服务器,用python写一个socket的客户端来完成二者之间的通信,但是发现存在一个问题,服务器方面就卡在读取inputsream的地方不动了,导致后面的代码 ...
- 【Python】TCP Socket的粘包和分包的处理
Reference: http://blog.csdn.net/yannanxiu/article/details/52096465 概述 在进行TCP Socket开发时,都需要处理数据包粘包和分包 ...
- 计算机网络:套接字(Socket)| Python socket实现服务器端与客户端通信,使用TCP socket阿里云ECS服务器与本机通信
所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象.一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制.从所处的地位来讲,套接字上联应 ...
- Python底层socket库
Python底层socket库将Unix关于网络通信的系统调用对象化处理,是底层函数的高级封装,socket()函数返回一个套接字,它的方法实现了各种套接字系统调用.read与write与Python ...
- [python]初探socket
1.什么是socket? Socket中文译作:套接字,但是大家一般约定俗称的都用:socket.我想在解释socket是什么之前,先说它是用来干嘛的:socket是来建立'通信'的基础,建立连接,传 ...
- 转:Python 的 Socket 编程教程
这是用来快速学习 Python Socket 套接字编程的指南和教程.Python 的 Socket 编程跟 C 语言很像. Python 官方关于 Socket 的函数请看 http://docs. ...
- Python Udp Socket
socket(套接字),传输层通信的端点,由IP和端口号组成(IP,Port),可以通过socket精确地找到服务器上的进程并与之通信 python2.6实现,基于AF_INET(网络套接字) 类型S ...
随机推荐
- Jasper_crosstab_group _Error incrementing crosstab dataset
error detail: net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRRuntimeExceptio ...
- IOS NSURL基本操作-备
NSURL其实就是我们在浏览器上看到的网站地址,这不就是一个字符串么,为什么还要在写一个NSURL呢,主要是因为网站地址的字符串都比较复杂,包括很多请求参数,这样在请求过程中需要解析出来每个部门,所以 ...
- dom4j解析xml字符串
import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.Docume ...
- HTTP断点续传(分块传输)(HTTP头格式非常清楚)
简述 断点续传:指的是在上传/下载时,将任务(一个文件或压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传/下载,如果碰到网络故障,可以从已经上传/下载的部分开始继续上传/下载未完成的部分, ...
- cf492B Vanya and Lanterns
B. Vanya and Lanterns time limit per test 1 second memory limit per test 256 megabytes input standar ...
- BHO多线程中实现右键菜单
在BHO中实现右键菜单网上相关文章很多,可以通过实现IDocHostUIHandler接口的ShowContextMenu.截获HTMLDocumentEvents2的OnContextMenu消息等 ...
- poj 2456 Aggressive cows(二分搜索之最大化最小值)
Description Farmer John has built a <= N <= ,) stalls. The stalls are located along a straight ...
- poj 3134 Power Calculus(迭代加深dfs+强剪枝)
Description Starting with x and repeatedly multiplying by x, we can compute x31 with thirty multipli ...
- Java:单例模式的七种写法[转]
第一种(懒汉,线程不安全): 1 public class Singleton { 2 private static Singleton instance; 3 privat ...
- shell脚本一条命令直接发送http请求(xjl456852原创)
我们知道nc命令是一个网络工具.可以连接tcp/udp.也能模拟发送http请求. 现在介绍通过shell脚本,一条命令直接发送http请求. 命令如下,可以对下面的地址等信息自行修改: #!/bin ...