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

本文共 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

你可能感兴趣的文章
idea 编译级别的设置
查看>>
内置对象Array的原型对象中添加方法
查看>>
6大设计原则
查看>>
Github简介
查看>>
CISCO2691的OSPF点对点密文测评测试
查看>>
POJ 1661 Help Jimmy(递推DP)
查看>>
Node.js 中文学习资料和教程导航
查看>>
查找(AVL平衡二叉树)
查看>>
AJAX-初学AJAX本地环境配置
查看>>
【精选】Nginx负载均衡学习笔记(一)实现HTTP负载均衡和TCP负载均衡(官方和OpenResty两种负载配置)...
查看>>
Linux常用基本命令( rmdir, rm, mv )
查看>>
POJ2406 Power Strings(KMP)
查看>>
JavaScript-console的使用_016
查看>>
两种方式设置iframe的高度区别
查看>>
Iterator 和 for...of 循环
查看>>
关于iOS 11.x微信连wifi流程中,在Portal页无法拉起微信问题的简单记录
查看>>
Python GUI库wxPython官网Hello World示例的逐行解释
查看>>
RE·WORK 巅峰对话:深度学习将彻底改变医疗健康领域
查看>>
Codeforces Round #442 (Div. 2) A B
查看>>
极值问题(acms)
查看>>