想写一个能让两个不同的主机间能进行通讯的软件??想仿造一个类似app store一样的软件???
如果你打算开发和网络有关的程序, 比如聊天软件,那么你绝对绕不过网络编程这一关,而socket通信就是网络编程的一个重点。
1. Socket的定义
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。(引自百度百科)Emmmm... 想了解理论部分的同学我建议你们到其他文章中查阅相关内容,咱们重点说说实战方面吧
2. 一个简单的Socket通信例子
# -*-coding:utf-8 -*-
# Server端
# Server.py
import socket
HOST = '127.0.0.1'
PORT = 33333
ADDR = (HOST,PORT)
# AF_INET 表示连接使用ipv4地址族 SOCK_STREAM表示用流式套接字
tcpSerSock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcpSerSock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
# 将套接字绑定该地址
tcpSerSock.bind(ADDR)
# 参数1表示阻塞模式 0表示非阻塞模式 默认为阻塞模式
tcpSerSock.setblocking(1)
# 开始监听TCP传入连接。参数指定在拒绝连接之前,操作系统可以挂起的最大连接数量。
tcpSerSock.listen(5)
print "Waiting connect..."
# tcpCliSock 是该链接的套接字,addr表示对方的地址
tcpCliSock, addr = tcpSerSock.accept()
# 设置超时时间
tcpCliSock.settimeout(20.0)
print '...connected from', addr
# recv(param)用于接收对方发送的数据 param为缓冲区大小
data = tcpCliSock.recv(1024)
print data
tcpCliSock.sendall("here is server")
# 关闭套接字
tcpCliSock.close()
# -*- coding: utf-8 -*-
# client端
# Client.py
import socket
address = ('127.0.0.1', 33333)
s = soc