博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python socket网络编程
阅读量:7013 次
发布时间:2019-06-28

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

socket套接字:为了使2个不同应用程序进行通信。

两种套接字类型:基于文件的和基于网络的

1.基于文件(AF_LOCAL或AF_UNIX):代表Unix

2.面向网络(AF_INET):代表因特网

面向连接的套接字(SOCK_STREAM):TCP

面向无连接的套接字(SOCK_DGRAM):UDP

Python中的网络编程socket()模块

 

TCP 网络程序

serice服务端

1 # -*- coding: utf-8 -*- 2 from socket import * 3 from time import ctime 4  5 HOST = ''  ##为空表示bind()函数可以绑定在所有有效的地址上 6 PORT=21567 7 BUFSIZ = 1024  ##缓冲区大小  1K 8 ADDR = (HOST,PORT) 9 10 tcpSerSock = socket(AF_INET,SOCK_STREAM)11 tcpSerSock.bind(ADDR)12 tcpSerSock.listen(5)  ##允许最多多少个链接 后来的会被拒绝掉13 14 while True:15     print 'waiting for connection...'16     tcpCliSock,addr = tcpSerSock.accept()  ##阻塞式线程17     print '...connected from:',addr18 19     while True:20         data = tcpCliSock.recv(BUFSIZ)21         if not data:22             break23         tcpCliSock.send('(%s) %s' % (ctime(),data))24     tcpCliSock.close()25 tcpSerSock.close()
View Code

 

client 客户端

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3  4 from socket import * 5 HOST = 'localhost'  ## 6 PORT=21517 7 BUFSIZ = 1024  ##缓冲区大小  1K 8 ADDR = (HOST,PORT) 9 10 tcpCliSock = socket(AF_INET,SOCK_STREAM)11 tcpCliSock.connect(ADDR)12 13 while True:14     data = raw_input('> ')15     if not data:16         break17     tcpCliSock.send(data)18     data = tcpCliSock.recv(BUFSIZ)19     if not data:20         break21     print data22 tcpCliSock.close()

UDP程序 

service 服务端

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3  4 from socket import * 5 from time import ctime 6  7 HOST='' 8 PORT=21567 9 BUFSIZ = 102410 ADDR = (HOST,PORT)11 12 udpSerSock = socket(AF_INET,SOCK_DGRAM)13 udpSerSock.bind(ADDR)14 15 while True:16     print 'waiting for message....'17     data , addr = udpSerSock.recvfrom(BUFSIZ)18     udpSerSock.sendto('[%s] %s' % (ctime(),data),addr)19     print '...received from and returned to:',addr20 udpSerSock.close()
View Code

client 客户端

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3  4 from socket import * 5  6 HOST='localhost' 7 PORT=21567 8 BUFSIZ=1024 9 ADDR = (HOST,PORT)10 11 udpCliSock= socket(AF_INET,SOCK_DGRAM)12 13 while True:14     data = raw_input('> ')15     if not data:16         break17     udpCliSock.sendto(data,ADDR)18     data,ADDR = udpCliSock.recvfrom(BUFSIZ)19     if not data:20         break21     print data22 23 udpCliSock.close()
View Code

SocketService 通讯程序

服务端

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3  4 from SocketServer import (TCPServer as TCP,StreamRequestHandler as SRH) 5 from time import ctime 6  7 HOST = '' 8 PORT = 21569 9 ADDR = (HOST,PORT)10 11 class MyRequestHandler(SRH):12     def handle(self):13         print '...connected from:',self.client_address14         self.wfile.write('[%s] %s' % (ctime(),self.rfile.readline()))15 16 tcpServ = TCP(ADDR,MyRequestHandler)17 print 'waiting for connection...'18 tcpServ.serve_forever()
View Code

客户端

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3  4 from socket import * 5 HOST = 'localhost'  ## 6 # HOST = '192.168.0.51' 7 PORT=21569 8 BUFSIZ = 1024  ##缓冲区大小  1K 9 ADDR = (HOST,PORT)10 11 while True:12     tcpCliSock = socket(AF_INET, SOCK_STREAM)13     tcpCliSock.connect(ADDR)14     data = raw_input('> ')15     if not data:16         break17     tcpCliSock.send('%s\r\n' % data)18     data = tcpCliSock.recv(BUFSIZ)19     if not data:20         break21     print data.strip()22     tcpCliSock.close()
View Code

 

转载于:https://www.cnblogs.com/seablog/p/7041513.html

你可能感兴趣的文章
安装zabbix时遇到的问题(一)
查看>>
wiki 的搭建和使用
查看>>
Linux下DRBD配置
查看>>
IP多播初步见解
查看>>
nginx屏蔽HEAD、PUT等请求
查看>>
Technical explanation of The MySpace Worm
查看>>
新闻列表标签
查看>>
消息队列技术点梳理(思维导图版)
查看>>
iOS9搜索功能说明
查看>>
PVS让存储颤抖,系列博文之四:PVS的写缓存新技术之XenApp方式实测篇
查看>>
Java调用python脚本以及会出现的问题
查看>>
Linux下使用命令获取redis数据脚本
查看>>
linux中的top命令详解
查看>>
Java输入输出流 3
查看>>
我的友情链接
查看>>
书摘-团队
查看>>
The Apply method of function object
查看>>
典型QoS配置案例
查看>>
利用for与if写出你的第一个小脚本
查看>>
多个ElasticSearch Cluster的一致性问题
查看>>