目的:实现两台机器之间的通信。也就是说一个作为服务端(时刻监听接收数据),另一个作为客户端(发送数据)。
Python实现的过程个人理解:
- 1.服务端开始监听。
- 2.客户端发起连接请求。
- 3.服务端收到连接请求信息。
- 3.客户端发送数据。
- 4.服务端收到客户端的数据,并返回给客户端自定义的数据。
- 5.客户端收到被返回的数据。
- 重复3-5…………
- 6.客户端或者服务端关闭这次通信。
- socket百度百科:https://baike.baidu.com/item/socket/281150。socket是python的默认模块。
socket_1serve.py 如下:
# -*- coding: utf-8 -*-"""Created on Wed Jul 18 16:42:50 2018@author: lihc"""#==============================================================================# 1. TCP server端代码# #!/usr/bin/env python# ## # -*- coding:utf-8 -*-# ##==============================================================================from socket import *from time import ctimeHOST = ''PORT = 21567BUFSIZE=1024ADDR=(HOST, PORT)tcpSrvSock=socket(AF_INET, SOCK_STREAM)tcpSrvSock.bind(ADDR)tcpSrvSock.listen(5)while True: print ('waiting for connection ...',ctime()) tcpCliSock,addr = tcpSrvSock.accept() print ('... connected from:', addr) while True: data=tcpCliSock.recv(BUFSIZE) print("receive from 2:",data) if not data: break tcpCliSock.send(str.encode('[%s] %s'%(ctime(), data))) print ([ctime()],':',data) tcpCliSock.close()tcpSrvSock.close()
socket_2client.py如下:
# -*- coding: utf-8 -*-"""Created on Wed Jul 18 16:46:33 2018@author: lihc"""#==============================================================================# 2. TCP client端代码# #!/usr/bin/env python# ## # -*- coding:utf-8 -*-# ##==============================================================================from socket import *HOST='localhost'PORT=21567BUFSIZE=1024ADDR=(HOST, PORT)tcpCliSock=socket(AF_INET, SOCK_STREAM)tcpCliSock.connect(ADDR)while True: data = input('>') print(type(data)) data = str.encode(data) print(data) if not data: break tcpCliSock.send(data) data=tcpCliSock.recv(BUFSIZE) if not data: break print (data)tcpCliSock.close()
http://www.360doc.com/content/17/1005/06/36536556_692309867.shtml
服务器端的基本流程:
1.初始化socket()
2.使用bind()绑定ip和端口号
3 使用listen()监听消息
4.获取客户端的套接字地址accept()
5.使用recv()接收数据,send()发送数据与客户端进行交互