python socket

套接字socket

  套接字起源于 20 世纪 70 年代加利福尼亚大学伯克利分校版本的 Unix,即人们所说的 BSD Unix。 因此,有时人们也把套接字称为“伯克利套接字”或“BSD 套接字”。一开始,套接字被设计用在同 一台主机上多个应用程序之间的通讯。这也被称进程间通讯,或 IPC。套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。

 

 

基于tcp下的socket

 

server

import socket        #引入模块
server=socket.socket()    #创建server对象
ip_port=('192.168.15.78',8888)    #声明服务端的IP和程序端口
server.bind(ip_port)       #把ip_port绑定到对象
server.listen()       #监听
while 1:
    conn,addr=server.accept()    #等待客户端连接
    while 1:
        server_msg=input('服务端:')      
        conn.send(server_msg.encode('utf-8'))    #向客户端发送消息
        from_client_msg=conn.recv(1024)      #接收客户端消息
        print(from_client_msg.decode('utf-8'))
        if from_client_msg.decode('utf-8')=='byebye':     #如果收到消息为byebye,就断开此次连接,继续等待下一个客户端连接
            break            #这就是优雅的断开
    conn.close()
server.close()

client

import socket
client=socket.socket()
server_ip_port=('192.168.15.78',8888)  #设置要连接服务端程序的IP和端口
client.connect(server_ip_port)    #进行连接
while 1:
    from_server_msg=client.recv(1024)     #接收服务端消息
    print(from_server_msg.decode('utf-8'))
    client_msg=input('客服端:')    
    client.send(client_msg.encode('utf-8'))     #向服务端发送消息
    if client_msg=='byebye':            #如果输入为byebye,就断开连接
        break
client.close()

基于udp协议下的socket

 

server

import socket
server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server_ip_port=('192.168.12.39',8888)
server.bind(server_ip_port)

while 1:
    from_client_msg, adrr = server.recvfrom(1024)
    print('来自%s的消息:%s'%(adrr,from_client_msg.decode('utf-8')))
    if from_client_msg.decode('utf-8')=='bye':
        break
    msg=input('请输入:')
    msg1=msg+','+from_client_msg.decode('utf-8').replace('sb','alexsb')
    server.sendto(msg1.encode('utf-8'),adrr)

client

import socket
client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server_ip_port=('192.168.12.39',8888)
while 1:
    msg=input('请输入:')
    client.sendto(msg.encode('utf-8'),server_ip_port)
    if msg=='bye':
        break
    from_server_msg,adrr=client.recvfrom(1024)
    print(from_server_msg.decode('utf-8'))
client.close()

 

posted @ 2018-12-08 01:10  anobscureretreat  阅读(158)  评论(0编辑  收藏  举报