socket也称作‘套接字,用于描述IP地址和端口,是一个通信的终点。

socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)

socket和file的区别:

  • file模块是针对某个指定文件进行【打开】【读写】【关闭】
  • socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】

socket编程--socket模块介绍

来看一个例子,将用户在客户输入在服务端转换为大写后返回

 1 #!/usr/bin/env python
 2 # coding=utf-8
 3 
 4 import socket
 5 
 6 ip_port = ('115.159.193.70', 8080)
 7 
 8 s = socket.socket()
 9 s.connect(ip_port)
10 while True:
11     send_data = input(">> input message: ").strip()
12     if len(send_data) == 0: continue
13     s.send(bytes(send_data, encoding='utf-8'))  # 发送输入的命令
14     tag = s.recv(1024)  # 接收tag
15     tag = str(tag, encoding='utf-8')
16     if tag == 'exit':
17         break
18     elif tag.startswith('Ready'):  # 如果收到Ready和包长度
19         msg_size = int(tag.split('|')[-1])
20     else:
21         print(tag)
22         continue
23     start_tag = 'Start'
24     s.send(bytes(start_tag, encoding='utf-8'))  # 发送开始标志
25     recv_size = 0
26     recv_data = b''
27     while recv_size < msg_size:
28         recv_msg = s.recv(1024)
29         recv_data += recv_msg
30         recv_size += len(recv_msg)
31         print('MSG SIZE %s RECV_SIZE %s' % (msg_size, recv_size))
32 
33     print(str(recv_data, encoding = 'utf-8'))
34 s.close()
client

相关文章: