|
本帖最后由 void_star 于 2016-6-12 13:49 编辑
实现功能:socket服务端监听本地制定端口,如果有TCP连接的话,会建立一个客户端线程与远程进行通信,可实现同时与多个远程连接进行通讯;仅仅做简单修改即可应用自己的其它项目中;
希望对初学者有用;
作者:voidar
Email:mailto:voidar@163.com
QQ:3210107341
注意:转载请注明出处
#代码开始
#coding=utf-8
import socket
import threading
import time
##################################################################
#服务器
class server(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.__host = ("192.168.1.248", 6111) #服务器地址
self.__server = None #服务器socket
self.__listenNum = 5 #服务器监听数量
def run(self):
print "服务器开启"
try:
self.__server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.__server.bind(self.__host)
self.__server.listen(self.__listenNum)
while True:
conn, addr = self.__server.accept()
print "与["+ str(addr) +"]连接"
client(csocket=conn, chost=addr).start()
except Exception, e:
print "服务器异常"
print e
finally:
print "服务器关闭"
##################################################################
#客户端
class client(threading.Thread):
def __init__(self,csocket, chost):
threading.Thread.__init__(self)
self.__client = csocket #通信用的socket
self.__host = chost #通信用的socket的信息
self.__bufNum = 1024 #接收缓冲区的大小
self.__timeout = 20 #空闲连接时间
def run(self):
if self.__client == None or self.__host == None: return
try:
self.__client.settimeout(20) #20秒无数据自动断开
while True:
temp = self.__client.recv(self.__bufNum)
if temp==None or temp.strip().__len__() <= 0: return
#解析数据的处理
print "[" + str(self.__host) + "]: " + str(temp).decode("gb2312")
self.__client.send(temp)
time.sleep(0.2)
#数据处理完毕
except Exception, e:
print "与["+ str(self.__host) +"]通信发送异常"
print e
finally:
print "与["+ str(self.__host) +"]断开连接"
try: self.__client.close()
except:pass
if __name__ == '__main__':
server().start()
#代码结束
使用方式:
1:将#代码开始~#代码结束之间的代码复制
2:在linux系统中新建一个文件,文件名可为tcpServer.py 如果是在windows系统下新建文件,将编码格式设置为utf8
3:将复制的内容粘贴到tcpServer.py文件夹下
4:如果在windows下新建的tcpServer.py,需要将文件放到linux下面
5:修改self.__host = ("192.168.1.248", 6111) #服务器地址 ip为linux本地IP,端口为自己想要设置的端口
6:在linux环境下,进入放置tcpServer.py的目录下,执行指令pyhon tctServer.py,会看到以下界面
py001.jpg
7:使用调试助手测试:
8:发送一个字符串,点击发送,会看到tcpServer给调试助手返回了同样的字符串
9:查看运行tctServer.py的linux终端显示
10:两个客户端访问服务端:
服务端仅仅将接收到的数据进行显示和返回给客户端,如果要进行其它操作,可在源码中直接更改!
希望对初学者有用!
备注信息:以上代码在PC和自己编译的python环境中运行均良好,未在Smart7688自带的python环境中测试运行;因为之前测试Smart7688自带的python运行程序时不稳定,所以自己重新编译了python和系统内核[因为内核限制太多,并且预装了好多软件],不过整个pyhon环境大小50M+,所以将python预装到U盘当中;
编译的python环境支持RT5350, MT7620等,如有需要可以留言!
From:Voidar
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|