目标:

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

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

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

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

服务端代码如下:

[root@localhost python]# cat tcpserver.py

#!/usr/bin/env python
# -*- coding: utf-8 -*- import socket host = ''
port = 8888
addr = (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 socket host = ''
port = 8888
addr = (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 socket
import time class 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 socket
import sys class 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 socket
import time class 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 socket
import sys class 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()

•运行代码,测试效果

最新文章

  1. dell笔记本三个系统,ubuntu16.04更新,boot分区容量不足解决办法
  2. mysql远程登录
  3. Dynamics AX 2012 R2 业务系列-销售业务流程
  4. PDF 补丁丁 0.4.3.1518 测试版发布:书签编辑器新增升级书签功能、优化PDF文档阅览器
  5. paip.最好的脚本语言node js 环境搭建连接mysql
  6. 51nod 1411 矩阵取数问题 V3
  7. 【转】S3C2440与SDRAM NorFlash NandFlash连线分析
  8. tornado架构分析2 options.py实现原理
  9. python与C,在写程序时踩过的坑!
  10. vue 组件动态 循环
  11. LIght OJ 1179
  12. 用JS制作一个信息管理平台(1)
  13. 模拟页面获取的php数据(四)
  14. 原生js---ajax---get方法传数据
  15. 十一 JS继承
  16. 地理空间数据云--TM影像下载
  17. Nodejs学习笔记:基础
  18. [转]Bootstrap table 分页 In asp.net MVC
  19. JavaSE——序列化和反序列化
  20. LintCode: Longest Words

热门文章

  1. AgileEAS.NET SOA中间件平台/敏捷软件开发平台
  2. Getting Started with Core Data
  3. CMStepCounter Class Refernce
  4. socket网络编程快速上手(二)——细节问题(2)
  5. 简单的mvc之一:简单的开始
  6. Event处理
  7. 取SQL分组中的某几行数据
  8. java版微信公众平台自定义菜单创建代码实现
  9. Javascript:再论Javascript的单线程机制 之 DOM渲染时机
  10. MapXtreme+Asp.net 动态轨迹