Python的Socket模块简单使用

分享到:

1、使用socket模块编写UDP服务端,代码如下。从中需要注意的知识是:bind()和connect()函数都只有一个参数,参数是表示地址的元组(hostname,port),千万不要写成两个参数了。

#! /usr/bin/env python
#coding=utf-8
#使用socket模块编写的服务器(通过UDP传输数据)
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(("",10000))  #bind函数只有一个参数
while True:
data,client=s.recvfrom(1024)
print "receive a connection from %s"  %str(client)   #str()函数可以将元组转换成字符串形式
#回显
s.sendto("echo:"+data,client)

2、使用socket模块编写的UDP客户端代码:

#! /usr/bin/env python
#coding=utf-8
#客户端,基于UDP协议
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.sendto("hello",("localhost",10000))
data,addr=s.recvfrom(1024)
print "receive data:%s  from %s" %(data,str(addr))

3、使用socket模块编写的TCP服务端

#! /usr/bin/env python
#coding=utf-8
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)
#也可以使用s=socket.socket()来通过默认参数来生成TCP的流套接字
#host=''   host可以为空,表示bind()函数可以绑定在所有有效地地址上
host="localhost"
port=1235
s.bind((host,port))   #注意,bind函数的参数只有一个,是(host,port)的元组
s.listen(3)
while True:
client,ipaddr=s.accept()
print "Got a connect from %s"  %str(ipaddr)
data=client.recv(1024)
print "receive data:%s" %data
client.send("echo:"+data)
client.close()

4、使用socket模块编写的TCP客户端;

#! /usr/bin/env python
#coding=utf-8
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)
#服务器的主机名和端口
host="localhost"
port=1235
s.connect((host,port))
s.send("i am client")
data=s.recv(1024)
print "Reply from server-----%s"  %data

昵    称:
验证码:

相关文档: