python socket

最简单的服务端和客户端代码:

服务端:

import socket       //导入socket模块
s=socket.socket()  //利用socket中的socket()函数创建套接字对象s

host=socket.gethostname()   //利用socket模块中的gethostname()函数获取本地的主机名
port=12345  //设置连接所用的端口
s.bind((host,port))  //将端口和刚刚创建的套接字对象s利用bind()函数进行绑定
s.listen(5)   //监听,最大可连接数5
while True:
  c,addr=s.accept()        //客户端连接过来后,accept()函数会返回两个数据(可用来和相应客户端收发数据的对象,客户端的ip),序列解包后赋给对象c和变量addr
  print("Got connection from '%s'"%addr)  //不解释
  c.send('Thank you for connecting')  //利用象c给相应的客户端发送数据
  c.close()  //关闭对象c

#---------------------------------------------------------------------------------------------

客户端:

import socket  //导入socket模块
s=socket.socket()  //创建套接字对象s

host=socket.gethostname()  //获取本地主机ip
port=12345  //设置端口号
s.connect((host,port))  //引用套接字对象s中的connect()函数和服务端发起连接
print(s.recv(1024))  //服务端连接后会返回一个空字符串,如果服务端设置一个send(),则返回这个send中的字符串,recv()函数就是接收这个字符串,一次最大接收的字节在此例中为1024
s.close  //关闭套接字对象

#------------------------------------------------------------------------------------------------

*.如果按照上面这个代码去执行,只能是在本地,因为host设置的是本地

socket.listen(backlog)

监听连接到该服务器套接字的连接,backlog参数指定最大的连接数队列数,该数最小为1,最大是多少和所用系统有关

socket.recv(bufsize[,flags])

接受从服务端返回的数据,返回值是一个代表返回的数据的字节对象,bufsize指定一次接收数据的最大字节数,flags参数为可选的,具体意义看unix手册中的recv(2),flags默认为0

posted @ 2016-01-26 18:08  deepbreath  阅读(187)  评论(0编辑  收藏  举报