2017-01-12 2 views
-1

Я искал в Интернете, чтобы создать простую программу python 3, которая может отправлять сообщения между двумя компьютерами, используя сокет. Проблема, с которой я столкнулся, заключается в том, что учебники являются python 2.Python 3 Как использовать сокет для создания простой чат-программы?

Как создать простую программу обмена сообщениями, используя сокет между двумя компьютерами в локальной сети?

+0

Интерфейс сокета изменил некоторые ... он имеет дело с 'bytes' not' str', поэтому вам нужно кодировать и декодировать, но в основном это то же самое, что и раньше. Для большинства учебников должно быть легко адаптироваться. – tdelaney

+0

Пахнет домашней работой, я не знаю. –

+0

Это не домашнее задание кстати, я много часов искал в Интернете в качестве личного проекта. –

ответ

2

Я могу дать вам простой пример, он работает в моем компьютере, мой питон версия 3.4.4

Клиент:

import socket 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

s.connect(("localhost", 3333)) 

str_recv = s.recv(1024) 

print(str(str_recv)) 

str_send = "Hello, the world!" 

s.send(bytes(str_send, 'utf-8')) 

str_recv = s.recv(1024) 

print(str(str_recv)) 
s.close() 

Сервер:

import socket 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

s.bind(('localhost', 3333)) 

s.listen(5) 
flag = 0 
while True: 
    connect, addr = s.accept() 
    print("Connection Address:" + str(addr)) 

    str_return = "Welcome to visit my test socket server. Waiting for command." 
    connect.sendto(bytes(str_return, 'utf-8'), addr) 

    str_recv, temp = connect.recvfrom(1024) 
    print(str_recv) 

    str_return = "I got your command, it is " + str(str_recv) 
    connect.sendto(bytes(str_return, 'utf-8'), addr) 

    connect.close() 

Надеюсь, это может вам помочь. LOL

+0

Что такое 'b' infront отправленного сообщения и как я могу избавиться от этого? __b'Добро пожаловать на мой тестовый сервер сокетов. Ожидание команды. b «Я получил вашу команду, это b'Hello, мир!» __ –

+1

@ComputingCorn 'b' означает' bytes' - socket отправляет данные в виде байтов. Вы можете использовать 'data.decode ('utf-8')' или 'str (data, 'utf-8')' для преобразования из байтов в строку. И 'text.encode ('utf-8')' или 'bytes (text, 'utf-8')' для преобразования строки в байты. – furas

+0

Да, Как сказал @furas! –

Смежные вопросы