python socket网络编程

本文介绍了Python中使用socket模块进行网络编程的方法,包括TCP和UDP的客户端和服务端编程实例,展示了如何建立连接、发送和接收数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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:',addr
18 
19     while True:
20         data = tcpCliSock.recv(BUFSIZ)
21         if not data:
22             break
23         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         break
17     tcpCliSock.send(data)
18     data = tcpCliSock.recv(BUFSIZ)
19     if not data:
20         break
21     print data
22 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 = 1024
10 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:',addr
20 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         break
17     udpCliSock.sendto(data,ADDR)
18     data,ADDR = udpCliSock.recvfrom(BUFSIZ)
19     if not data:
20         break
21     print data
22 
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_address
14         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         break
17     tcpCliSock.send('%s\r\n' % data)
18     data = tcpCliSock.recv(BUFSIZ)
19     if not data:
20         break
21     print data.strip()
22     tcpCliSock.close()
View Code

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值