python实现socket通讯(TCP)

Server:

# server import socket address = ('127.0.0.1', 31500) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # s = socket.socket() s.bind(address) s.listen(5) ss, addr = s.accept() print 'got connected from',addr ss.send('byebye') ra = ss.recv(512) print ra ss.close() s.close()

Client:

# client import socket address = ('127.0.0.1', 31500) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(address) data = s.recv(512) print 'the data received is',data s.send('hihi') s.close()

运行结果:

server

[work@db-testing-com06-vm3.db01.baidu.com python]$ python server.py
got connected from ('127.0.0.1', 47872)
hihi

client

[work@db-testing-com06-vm3.db01.baidu.com python]$ python client.py
the data received is byebye

==============================================================================

参考资料:http://www.cppblog.com/lai3d/archive/2008/02/19/42919.html

一个简单的服务器和客户端通信的例子

服务器:

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> import socket
s
= socket.socket()
s.bind((
' xxx.xxx.xxx.xxx ' ,xxxx)) # ip地址和端口号
s.listen( 5 )
cs,address
= s.accept()
print ' gotconnectedfrom ' ,address
cs.send(
' byebye ' )
ra
= cs.recv( 512 )
print ra
cs.close()

客户端:

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> import socket
s
= socket.socket()
s.connect((
' xxx.xxx.xxx.xxx ' ,xxxx)) # 与服务器程序ip地址和端口号相同
data = s.recv( 512 )
s.send(
' hihi ' )
s.close()
print ' thedatareceivedis ' ,data

运行:

在本机测试(windows环境下,可以将ip地址改为本机ip,端口号在1024以上,windows将1024以下的为保留),运行--CMD--进入命令行模式

先python 服务器程序,后python 客户端程序即可。

或者启动服务器程序后,用telnet ip地址 端口号,也可以得到同样结果。


让server持续接受连接

server.py

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> import socket
s
= socket.socket()
s.bind((
' 192.168.43.137 ' , 2000 ))
s.listen(
5 )

while 1 :
cs,address
= s.accept()
print ' gotconnectedfrom ' ,address
cs.send(
' helloIamserver,welcome ' )
ra
= cs.recv( 512 )
print ra
cs.close()

测试两个一个程序中两个socket并存是否可行

client.py

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> import socket
s
= socket.socket()
s.connect((
' 192.168.43.137 ' , 2000 ))
data
= s.recv( 512 )
print ' thedatareceivedis/n ' ,data
s.send(
' hihiIamclient ' )

sock2
= socket.socket()
sock2.connect((
' 192.168.43.137 ' , 2000 ))
data2
= sock2.recv( 512 )
print ' thedatareceivedfromserveris/n ' ,data2
sock2.send(
' clientsendusesock2 ' )
sock2.close()

s.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值