What is Socket
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务
上面是不是很乱?但是概念一定要了解
现在是初学,我把Socket理解为一个电话拨通电话,接听电话!通信的一个概念!
Scket在写的时候要记住:有发就有收,收发必相等!
第一个Socket代码
#!/usr/bin/env python #-*- coding:utf-8 -*- import socket #创建socket对象 sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #设置监听的IP与端口 sk.bind(('127.0.0.1',6666)) #设置client最大等待连接数 sk.listen(5) while True: #循环 print 'waiting client connection .......' #只有accept & recv 会阻塞,这里accept阻塞,直到有client连接过来 #connection代表客户端对象,address是客户端的IP connection,address = sk.accept() #等待接收客户端信息 client_messge = connection.recv(1024) #打印客户端信息 print 'client send messge',client_messge #发送回执信息给client 收发必须相同 connection.sendall('hello Client this server') #关闭和client的连接 connection.close()
#!/usr/bin/env python #-*- coding:utf-8 -*- import socket #创建socket对象 ck = socket.socket() #通过IP&端口连接server ck.connect(('127.0.0.1',6666)) #发送消息给服务端 ck.sendall('hello server this is Clinet') #接收服务端的消息并打印 server_answer = ck.recv(1024) print server_answer #关闭连接 ck.close()