python socket的c/s模式
2015-06-08 10:31
597 查看
1、TCP建立连接的方法:
服务端:
第一步:建立socket对象;
第二步:设置socket选项(可选)
第三步:绑定到一个端口,也可以是一个网卡;
第四步:倾听连接。
客户端:
第一步:建立socket对象;
第二步:调用connect()建立一个和服务器的连接
2、服务端:
3、客户端
服务端:
第一步:建立socket对象;
第二步:设置socket选项(可选)
第三步:绑定到一个端口,也可以是一个网卡;
第四步:倾听连接。
客户端:
第一步:建立socket对象;
第二步:调用connect()建立一个和服务器的连接
2、服务端:
#!/usr/local/Python34/bin/python3 #coding=gbk import socket, traceback host = '' port = 51423 #建立socket对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #设置和得到socket对象;当socket关闭后,本地端用于该socket的端口号立刻就可以被重用。 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #绑定到一个端口 s.bind((host, port)) #倾听连接 s.listen(1) print("done") while 1: #when connect error happen, skip the error try: ClientSock, ClientAddr = s.accept() except KeyboardInterrupt: raise except: traceback.print_exc() continue #Get informaion form client and reply try: print("Get connect from ", ClientSock.getpeername()) data = ClientSock.recv(1024) print("The information we get is %s" % str(data)) ClientSock.sendall(("I`ve got the information: ").encode()) ClientSock.sendall((data.decode()).encode()) while 1: str = input("What you want to say:") ClientSock.sendall(str.encode()) ClientSock.sendall(('\n').encode()) except (KeyboardInterrupt ,SystemError): raise except: traceback.print_exc() #Clocs socket try: ClientSock.close() except KeyboardInterrupt: raise except: traceback.print_exc()
3、客户端
#!/usr/local/Python34/bin/python3 #coding=gbk import socket, sys host = '10.15.89.150' # host = raw_input("Plz imput destination IP:") # data = raw_input("Plz imput what you want to submit:") port = 51423 ''' socket 模块中的socket(family,type[,proto])函数创建一个新的socket对象。 family的取值通常是AF_INET。type 的取值通常是SOCK_STREAM(用于定向的连接,可靠的TCP连接)或SOCK_DGRAM(用于UDP): ''' s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) try: s.connect((host, port)) except socket.gaierror as e: print("Address-related error connecting to server: %s" %e) sys.exit(1) except socket.error as e: print("Connection error: %s" %e) sys.exit(1) data = input("Plz imput what you want to submit:") s.send(data.encode()) s.shutdown(1) print("Submit Complete") while 1: buf = s.recv(1024).decode() sys.stdout.write(buf)
相关文章推荐
- 有趣的python range()函数
- python中if __name__ == '__main__': 的解析
- Python set模块使用方法
- python--列表,元组
- Python判断字符串与大小写转换
- Python中map()函数浅析
- 基于PyQt(Python+QT)的gui程序开发 (转)
- 说说Python程序的执行过程
- python 使用scapy进行ARP扫描
- python结合opencv实现人脸检测与跟踪
- tornado + python 文件上传
- Myeclipse python 环境搭建
- python可变参数调用函数问题
- Python字符编码详解
- 高斯判别分析算法及其python实现
- python结合opencv实现人脸检测与跟踪
- Python判断字符串与大小写转换
- Python文件右键找不到IDLE打开项解决办法
- Python中逗号的三种作用实例分析
- Python赋值语句后逗号的作用分析