Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 最近,我试图建立一个客户端和服务器来发送和接收消息,但我被卡住了_Python_Python 3.x_Sockets - Fatal编程技术网

Python 最近,我试图建立一个客户端和服务器来发送和接收消息,但我被卡住了

Python 最近,我试图建立一个客户端和服务器来发送和接收消息,但我被卡住了,python,python-3.x,sockets,Python,Python 3.x,Sockets,我只是想用一个客户端和服务器建立一个基本的聊天。当我运行这两个程序时,它们都给了我相同的错误。此错误是client1.py的错误 Traceback (most recent call last): File "C:/Users/Abishek/AppData/Roaming/JetBrains/PyCharmCE2020.2/scratches/client1.py", line 1, in <module> from socket import s

我只是想用一个客户端和服务器建立一个基本的聊天。当我运行这两个程序时,它们都给了我相同的错误。此错误是client1.py的错误

Traceback (most recent call last):
  File "C:/Users/Abishek/AppData/Roaming/JetBrains/PyCharmCE2020.2/scratches/client1.py", line 1, in <module>
    from socket import socket, AF_INET, SOCK_STREAM
  File "C:\Users\Abishek\AppData\Roaming\JetBrains\PyCharmCE2020.2\scratches\socket.py", line 64, in <module>
    IntEnum._convert_(
  File "C:\Python37\Lib\enum.py", line 349, in __getattr__
    raise AttributeError(name) from None
AttributeError: _convert_
而chatserver.py是:

from  socket import AF_INET,SOCK_STREAM, socket
import threading

SERVER = socket.gethostbyname(socket.gethostname())
port = 4444
sock = socket.socket(AF_INET,SOCK_STREAM)
format = 'utf-8'
buffer_size = 128
ADDR = (SERVER,port)
Disconnect_msg = 'Disconnected'


def connection(SERVER,port):
    sock.bind(ADDR)
    run = True
    try:
        sock.connect(ADDR)
        print('Connection successful')
    except Exception as err:
        print('Error connecting to client :'+str(err))
        run = False


def receiving_data(conn, addr):
    connected = True
    while connected:
        recv_msg = conn.recv(buffer_size).decode(format)
        if recv_msg:
            print(f"[MESSAGE RECEIVED FROM {conn}  {addr}] : {recv_msg}")
        if Disconnect_msg in recv_msg:
            print(f"[CLIENT {conn}  { addr} Disconnected]")
            connected= False



if __name__ == '__main__':
    sock.bind(ADDR)
    sock.listen(5)
    print(f'Server ip; {SERVER}')
    print('Waiting for connection...')
    conn , addr = sock.accept()
    accpt_conn = threading.Thread(target=connection, args=ADDR)
    recv_data = threading.Thread(target=receiving_data, args =(conn,addr))
    recv_data.start()
    accpt_conn.start()
    recv_data.join()
    accpt_conn.join()
    sock.close()
你能帮我一下我做错了什么吗。 我使用Pycharm作为我的IDE,我使用的是Windows10


谢谢大家…

您是否尝试在powershell中直接运行它?
回溯(上次调用):文件“chatserver.py”,第4行,在SERVER=socket.gethostbyname(socket.gethostname())AttributeError:type object“socket”没有属性“gethostbyname”
但是client1.py运行了,但服务器没有。当我在命令提示符中运行时,请记住套接字是unix的东西,并不是所有东西都能在windows中工作,我有点惊讶它能在windows中工作。我认为是pycharm造成了问题,非常感谢。在powershell中运行看起来相当不错。所以它现在应该可以工作了,很高兴你让它运行起来了。祝你好运您是否尝试直接在powershell中运行它?
回溯(最近一次调用):文件“chatserver.py”,第4行,在SERVER=socket.gethostbyname(socket.gethostname())AttributeError:类型对象“socket”没有属性“gethostbyname”
,但client1.py运行了,但服务器没有。当我在命令提示符中运行时,请记住套接字是unix的东西,并不是所有东西都能在windows中工作,我有点惊讶它能在windows中工作。我认为是pycharm造成了问题,非常感谢。在powershell中运行看起来相当不错。所以它现在应该可以工作了,很高兴你让它运行起来了。祝你好运
from socket import socket, AF_INET, SOCK_STREAM
import threading

FORMAT = 'utf-8'
server =input('Enter server ip :')
port = 8080
DISCONNECT_MSG = 'break' or 'disconnect'
sock = socket(AF_INET,SOCK_STREAM)


def connection(server,port):
    try:
        sock.connect((server, port))
        print("Connection successful")
    except Exception as err:
        print('Connection failed :' +str(err))


def send_msg(client_name):
    connected = True
    while connected:
        message = input('>>> ')
        msg = message.encode(FORMAT)
        client_info_with_msg = f'[{client_name}: {message}]'
        sock.send(client_info_with_msg.encode())
        if message == DISCONNECT_MSG:
            print(f'{client_name} DISCONNECTED!!')
            connected = False


def recv_msg():
    run = True
    while run:
        recv_message = sock.recv(512)
        message = recv_message.decode('utf-8')
        if message == DISCONNECT_MSG:
            run = False
        print(f'{message}')


def main(server,port):
    connection(server, port)
    client_name = input("Enter your name: ")
    thread1 = threading.Thread(target=send_msg, args=client_name)
    thread1.start()
    thread2 = threading.Thread(target=recv_msg, args=None)
    thread2.start()
    thread1.join()
    thread2.join()
    sock.close()

main(server,port)
from  socket import AF_INET,SOCK_STREAM, socket
import threading

SERVER = socket.gethostbyname(socket.gethostname())
port = 4444
sock = socket.socket(AF_INET,SOCK_STREAM)
format = 'utf-8'
buffer_size = 128
ADDR = (SERVER,port)
Disconnect_msg = 'Disconnected'


def connection(SERVER,port):
    sock.bind(ADDR)
    run = True
    try:
        sock.connect(ADDR)
        print('Connection successful')
    except Exception as err:
        print('Error connecting to client :'+str(err))
        run = False


def receiving_data(conn, addr):
    connected = True
    while connected:
        recv_msg = conn.recv(buffer_size).decode(format)
        if recv_msg:
            print(f"[MESSAGE RECEIVED FROM {conn}  {addr}] : {recv_msg}")
        if Disconnect_msg in recv_msg:
            print(f"[CLIENT {conn}  { addr} Disconnected]")
            connected= False



if __name__ == '__main__':
    sock.bind(ADDR)
    sock.listen(5)
    print(f'Server ip; {SERVER}')
    print('Waiting for connection...')
    conn , addr = sock.accept()
    accpt_conn = threading.Thread(target=connection, args=ADDR)
    recv_data = threading.Thread(target=receiving_data, args =(conn,addr))
    recv_data.start()
    accpt_conn.start()
    recv_data.join()
    accpt_conn.join()
    sock.close()