博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket编程之TCP/UDP
阅读量:6229 次
发布时间:2019-06-21

本文共 4232 字,大约阅读时间需要 14 分钟。

目标:

  1.编写TCP服务端客户端,实现客户端发送数据,服务端接收打印

  2.采用OOP方式编写TCP服务端客户端,实现客户端发送数据,服务端添加时间戳,返回给客户端

  3.采用OOP方式编写UDP服务端客户端,实现客户端发送数据,服务端添加时间戳,返回给客户端。

 

1.编写TCP服务端客户端,实现客户端发送数据,服务端接收打印

服务端代码如下:

[root@localhost python]# cat tcpserver.py

#!/usr/bin/env python# -*- coding: utf-8 -*-import sockethost = ''port = 8888addr = (host,port)s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)s.bind(addr)s.listen(1)while True:    try:        cli_sock, cli_addr = s.accept()    except KeyboardInterrupt:        break    print "Client Connected From: ", cli_addr    while True:        cli_sock.send("I See You.\n")        data = cli_sock.recv(1024)        if not data.strip():            break        print data    cli_sock.close()s.close()

客户端代码如下:

[root@localhost python]# cat tcpclient.py

#!/usr/bin/env python# -*- coding: utf-8 -*-import sockethost = ''port = 8888addr = (host, port)c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)c.connect(addr)while True:    print c.recv(1024),    data = raw_input("> ")    if not data.strip():        break    c.send('%s\n' % data)c.close()

•运行代码,测试效果

 

2.采用OOP方式编写TCP服务端客户端,实现客户端发送数据,服务端添加时间戳,返回给客户端

服务端代码如下:

[root@localhost python]# cat tcptimeserv.py

#!/usr/bin/env python# -*- coding: utf-8 -*-import socketimport timeclass TcpTimeServ(object):    def __init__(self, host, port):        self.addr = (host, port)        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        self.s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)        self.s.bind(self.addr)        self.s.listen(1)    def handle_child(self, c_sock):        while True:            data = c_sock.recv(1024)            if not data.strip():                break            c_sock.send("[%s] %s\n" %(time.ctime(), data))    def mainloop(self):        while True:            try:                cli_sock, cli_addr = self.s.accept()            except KeyboardInterrupt:                break            print "Client Connected From: %s", cli_addr            self.handle_child(cli_sock)            cli_sock.close()        self.s.close()if __name__ == "__main__":    tcpserv = TcpTimeServ('0.0.0.0', 8888)    tcpserv.mainloop()

客户端代码如下:

[root@localhost python]# cat tcptimecli.py

#!/usr/bin/env python# -*- coding: utf-8 -*-import socketimport sysclass TcpTimeCli(object):    def __init__(self, host, port):        self.addr = (host, port)        self.c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        self.c.connect(self.addr)    def mainloop(self):        while True:            data = raw_input("> ").strip()            if not data:                break            self.c.send("%s" % data)            print self.c.recv(1024)        self.c.close()if __name__ == "__main__":    host = sys.argv[1]    port = int(sys.argv[2])    tcpcli = TcpTimeCli(host, port)    tcpcli.mainloop()

•运行代码,测试效果

 

3.采用OOP方式编写UDP服务端客户端,实现客户端发送数据,服务端添加时间戳,返回给客户端。

服务端代码如下:

 [root@localhost python]# cat udpserver.py

#!/usr/bin/env python# -*- coding: utf-8 -*-import socketimport timeclass UdpServ(object):    def __init__(self, host, port):        self.addr = (host, port)        self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)        self.s.bind(self.addr)    def mainloop(self):        while True:            data, cli_addr = self.s.recvfrom(1024)            data = data.strip()            self.s.sendto('[%s] %s\n' %(time.ctime(), data), cli_addr)        self.close()if __name__ == "__main__":    host = ''    port = 8888    udpserv = UdpServ(host, port)    udpserv.mainloop()

客户端代码如下:

[root@localhost python]# cat udpclient.py

#!/usr/bin/env python# -*- coding: utf-8 -*-import socketimport sysclass UdpCli(object):    def __init__(self, host, port):        self.addr = (host, port)        self.c = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)    def mainloop(self):        while True:            data = raw_input("> ").strip()            if not data:                break            self.c.sendto("%s\n" % data, self.addr)            print self.c.recvfrom(1024)[0]        self.c.close()if __name__ == "__main__":    host = sys.argv[1]    port = int(sys.argv[2])    udpcli = UdpCli(host, port)    udpcli.mainloop()

•运行代码,测试效果

 

转载于:https://www.cnblogs.com/xkops/p/6290527.html

你可能感兴趣的文章
这几天的两件趣事
查看>>
小块头大作用 新型低成本测距传感器适用于无人机
查看>>
VSTO之旅系列(五):创建Outlook解决方案
查看>>
[erlang] mnesia
查看>>
php编码
查看>>
Java使用Socket传输文件遇到的问题(转)
查看>>
MYSQL-用户权限的验证过程(转)
查看>>
快递配送最后一公里的痛:利益失衡后开始崩塌
查看>>
深入理解Tomcat系列之一:系统架构(转)
查看>>
ArcMap打开越来越慢
查看>>
nagios客户端未启动报错
查看>>
Redux
查看>>
基于API调用的恶意软件分析技术
查看>>
顺序容器
查看>>
NodeJs——进程管理(一)
查看>>
微信支付开发(7) H5支付
查看>>
ffmpeg解码RTSP/TCP视频流H.264(QT界面显示视频画面)
查看>>
深度学习入门:投身深度学习你需要哪些准备?
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
医疗数据难获得,人工智能医疗发展遭遇瓶颈期
查看>>