码迷,mamicode.com
首页 > 其他好文 > 详细

Socket编程简述

时间:2018-03-30 00:10:23      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:socket   python   

Socket是进程之间通讯的一种方式,调用socket网络库中的API函数实现不同主机相关进程的数据交换。网络中所有涉及通讯的设备都需要scoket。
首先我们需要了解一下相关概念
1、IP地址:根据TCP/IP协议分配给网络中主机的唯一网络地址,该地址是网络通讯中必须知道的
2、端口号:主机内部用来区分本地通讯进程的,一个进程必须有一个端口号
3、连接:指两个进程之间的通讯链路
4、半相关:网络中用一个三元组可以子在全局唯一标识一进程(三元组:协议,本地地址,本地端口号)
5、全相关:一个完整的网间进程通讯是需要两个进程组成(高层协议一致),一个完整的通讯是需要一个五元组标识
(五元组:协议,本地ip,本地端口,目的ip,目的端口)

Python中socket是通过调用socket模块,调用里面的相关函数实现tcp、udp通讯。
socket编程思路:

TCP服务端:
创建套接字,绑定套接字到本地IP与端口
socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind()
开始监听连接
s.listen()
进入循环,不断接受客户端的连接请求
s.accept()
然后接收传来的数据,并发送给对方数据
s.recv() 
s.sendall()
传输完毕后,关闭套接字
s.close()
TCP客户端:
创建套接字,连接远端地址
socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect()
连接后发送数据和接收数据
s.sendall()
s.recv()
传输完毕后,关闭套接字
s.close()
=============================================
UDP通讯实现:

# 创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 设置接收方ip端口(ip, port)
dest_addr = ()
# 绑定本地端口(ip,端口)ip不填写默认检测所有本地ip
localip_addr =()
udp_socket.bind()
# 获取输入数据
send_data = input()
# 发送数据 
udp_socket.sendto(send_data.encode("utf-8"), dest_addr)
# 接受数据
recv_data = udp_socket.recvfrom(1024)
# 打印接受的数据,window用gbk,linux默认utf-8
print(recv_data[0].decode("gbk"))
for tmp in recv_data[1]:
    print(tmp)
# 关闭套接字
udp_socket.close()

Socket编程简述

标签:socket   python   

原文地址:http://blog.51cto.com/10412806/2092742

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!