Python TCP Socket 套接字

Socket其实是一个用途很多的东西。更少的资源消耗,更多的并发量。减少轮询带来的不便利。可以有更好的可触发的节点。
下面我们用TCP socket这个协议跟大家说明一下。

应用层面比如聊天室、发送文件、视频直播(UDP)等都可以使用socket完成。

**客户端**

#coding:utf-8
import socket

#创建客户端 实例化
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #注意这里TCP对应 SOCK_STREAM

#定义要发送的服务器地址(注意客户端定义的是要接通的server地址),客户端不需要填写自己的地址
port = 9091 #注意端口可以是int
server_ip = '127.0.0.1' #服务器地址要是str
#通过port和ip链接服务器

#通过实例化的client调用connect 传入 地址
client.connect((server_ip,port)) #注意connect只接受一个param 所以要传入元组

#使用while循环让socket持续运转 #这就是socket的优势 不会消耗系统资源

while True:
    #数据输入端
    sendmsg = raw_input('Your Client MSG--> ')
   #注意这里要处理一下空字符发送,这个会卡死服务器
    if sendmsg== '':
        print '内容不能为空'
        sendmsg = raw_input('Your Client MSG--> ')
    #定义一个退出判断
    else:
        if sendmsg =='q':
            break
        #客户端数据发送
        client.send(sendmsg)
        CallbackMsg = client.recv(100) #服务器返回客户端数据(缓存,注意缓存要够大,否则无法全部读取数据)
        print CallbackMsg
client.close()

**服务器端**
#coding:utf-8
import socket

#创建服务器
Server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#这里要定义服务器的真实地址
port = 9091 #注意端口可以是int
server_ip = '127.0.0.1' #服务器地址要是str

#把服务和地址绑定
Server.bind((server_ip,port))

#监听客户单的链接数
Server.listen(5)

#建立监听 注意accept返回两个数据:
# 1.client返回client对象用户后边调用接受数据
# 2. 返回client地址
client,addr = Server.accept()

#使用While 保持socket运行
while True:
    #接受客户端消息
    recvmsg = client.recv(1024) #这里注意缓存
    print recvmsg,addr #这里打印了 客户端发来的信息,addr是客户端地址

    #判断是否退出
    if recvmsg == 'q':
        break
    client.send('Server Confirm') #可标准信息发回 也可以自定义用一个input