socket 套接字服务器端和客户端发送信息

import socket
import threading
host=''
port=6889

def cilenThred(conn,addr):
    print("成功接受客户端{}的连接:{}".format(addr[0],str(addr[1])))
    #服务器向客户端发送信息说明已经连接成功
    msg='你已经成功连接到服务器'
    conn.sendall(bytes(msg,encoding="utf-8"))
    while True:
        data=conn.recv(1024)
        print("服务器接受到的数据为{}".format(str(data,encoding="utf-8")))
        message='server>>{}'.format(str(data,encoding="utf-8"))
        conn.sendall(bytes(message,encoding="utf-8"))
        chioce = str(conn.recv(1024),encoding="utf-8")
        if chioce=="exit":
            conn.close()
            break
        else:
            pass

try:
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #绑定ip地址和端口号
    s.bind((host,port))
    print('成功绑定了ip地址,端口号为{}'.format(port))
    #服务器创建监听
    s.listen(10)
    print("创建监听模式")
    while True:
        #成功接收客户端的连接,兵返回连接对象和地址
        conn,addr=s.accept()
        t=threading.Thread(target=cilenThred,args=(conn,addr))
        t.start()
except socket.error as msg:
    print("socket出现错误,错误为{}".format(msg))
finally:
    s.close()

客户端:

import socket
import sys

host="localhost"
port=6889

try:
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    print('成功创建socket对象')
    s.connect((host,port))
    print("成功连接到服务器端")
    reply=str(s.recv(1024),encoding="utf-8")
    print("成功接受到服务器返回的内容:{}".format(reply))
    while True:
        message=input("请输入要发送到服务器的信息》》")
        s.sendall(bytes(message,encoding="utf-8"))
        print("向服务器发送请求成功")
        reply1=str(s.recv(1024),encoding="utf-8")
        print("成功接受到服务器返回的内容{}".format(reply1))
        chioce=input("是否继续输入?(y/n)")
        if chioce.lower()=="y":
            s.sendall(bytes("ok",encoding="utf-8"))
            pass
        else:
            s.sendall(bytes("exit",encoding="utf-8"))
            print("输入结束")
            break
except socket.error as msg:
    print("创建socket错误,错误为{0}".format(msg))
    sys.exit(-1)
finally:
    s.close()

 

posted @ 2018-09-05 20:38  刘难瘦  阅读(1195)  评论(0编辑  收藏  举报