client 1


'''
套接字(socket)是一個抽象層,應用程序可以通過它發送或接收數據,可對其進行像對文件一樣的打開、讀寫和關閉等操作。套接字允許應用程序將I/O插入到網絡中,並與網絡中的其他應用程序進行通信。網絡套接字是IP地址與端口的組合。
端對端通信
客戶端----服務器端
client    server

TCP:面向連接
    三次握手  保證數據不丟失   特點: 傳輸速度慢
    SOCK_STREAM
UDP:非面向連接
    沒有三次握手   視頻聊天  直播    傳輸的快  但是不能保證完整性
   SOCK_DGRAM
   65535
'''

from socket import socket, AF_INET, SOCK_STREAM

socket = socket(AF_INET, SOCK_STREAM)
conn_addr = ('10.0.105.158', 8001)

socket.connect(conn_addr)  # 三次握手

socket.send('hello'.encode('utf-8'))

socket.close()

from socket import socket, AF_INET, SOCK_STREAM

socket = socket(AF_INET, SOCK_STREAM)
conn_addr = ('10.0.105.192', 8001)

socket.connect(conn_addr)  # 三次握手
while True:
    msg = input('請輸入給server說:')
    socket.send(msg.encode('utf-8'))
    if msg == 'bye':
        break

    # 獲取服務器的回話
    data = socket.recv(512).decode('utf-8')
    print('server說:{}'.format(data))
    if data == 'bye':
        break

socket.close()

from socket import socket, AF_INET, SOCK_STREAM

# 表示創建了一個客戶端的socket
from threading import Thread

client = socket(AF_INET, SOCK_STREAM)

con_address = ('10.0.105.192', 8001)

# 告訴客戶端要連接的服務器的地址和端口號
client.connect(con_address)


def send_msg(sock):
    while True:
        msg = input('客戶端輸入要發送的消息:')
        sock.send(msg.encode('utf-8'))


def recv_msg(sock):
    while True:
        data = sock.recv(512).decode('utf-8')
        if len(data) == 0:
            break
        print('收到了服務器端的消息:', data)


Thread(target=send_msg, args=(client,)).start()
Thread(target=recv_msg, args=(client,)).start()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章