当前位置: 首页 > 知识库问答 >
问题:

客户机服务器套接字编程不重写

哈泰
2023-03-14
server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
server_address=("192.168.1.105",8081)

print ('Starting up on %s port %s' % server_address)

response=None

try :

    server.bind(server_address)
    server.listen(5)
    connection,client_address=server.accept()
    print ("connection from" % connection.getpeername())

    data=connection.recv(4096)

    if data:
        print ("recived ", repr(data))

        data=data.rstrip()
        connection.send("%$\n%$\n%$\n" % ('-'*80,data.center(80),'-'*80) )

    connection.shutdown(socket.SHUT_RD | socket.SHUT_WR) 
    connection.close()
    print ('Connection closed()')

    server.close()

except socket.error as msg:
    response=msg


print (response)
import socket


s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.1.105",8080))
v=bytes("HI man","utf-8")
s.send(v);
data=s.recv(1024)
s.close()
print(data)

输出:服务器=在192.168.1.105端口上启动8081客户端=B''

(Python 3.3版)

共有1个答案

郜驰
2023-03-14

我也在使用Python 3.3。为了解决您的问题,让我们首先让您的服务器接受来自任何网卡的连接,并让您的客户机通过循环IP地址连接到服务器。似乎8080端口不可用。请尝试修改您的代码,并让我知道

服务器:

import socket

server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
server_address=('',5000)

print ('Starting up on',server_address)

response=None

try :

    server.bind(server_address)
    server.listen(5)
    connection,client_address=server.accept()
    print ("connection from ",client_address)

    data=connection.recv(4096)


    if data:
        data=data.decode()

        print ("recived: ", data)

        data=data.rstrip()
        reply="%s\n%s\n%s\n" % ('-'*80,data.center(80),'-'*80)
        connection.sendall(reply.encode())


    connection.close()
    print ('Connection closed()')

    server.close()

except socket.error as msg:
    response=msg

if not response:
    print("Program success")
else:
    print (response)

客户

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("127.0.0.1",5000))
v="HI man"
s.send(v.encode());
data=s.recv(1024)
s.close()
print(data.decode())
 类似资料:
  • 我试图用java实现一个客户端服务器,在这里我读取客户端中的输入并在服务器中执行UperCase,然后返回客户端并打印UperCase。我使用ObjectOutputStream和ObjectInputStream进行读写,但是当我在客户机中键入一个msg时,程序会显示以下错误: Digite uma msg casa java.io.eofexception位于java.io.datainput

  • 如何处理多个客户端连接到一个服务器?我有这个logserver.java 和一个嵌入式applet,其中包含如下所示的部分代码,例如 现在的问题是,如果我在服务器上运行“Java日志服务器”,它将打开应用程序并等待输入流,如果我打开我的站点,它将开始流日志。但如果我使用其他计算机/网络再打开一个站点,第二个站点不会记录流。似乎是因为第一个仍然绑定到端口5000。 我该怎么处理?socket实际上是

  • 我对套接字有点陌生,我正在尝试编写一个程序,在这个程序中,我基本上可以从客户端程序向服务器程序发送一些简单的请求。现在我只想在客户端有1或2个选项供用户选择。例如,如果用户在客户端选择“选项1”,那么服务器会返回一条消息“您选择选项1”,以此类推,但我不知道如何读取服务器上从客户端发送的输入。 客户代码: 服务器代码: 我需要在Clinet中使用两个不同的BufferedReader吗?一个用于用

  • 正在编写一个服务器,使用Java套接字的客户端聊天程序。这是我的服务器套接字类的代码。 客户端能够建立连接并向服务器发送消息。服务器也可以接收客户端发送的消息。问题是当消息从服务器发送时,客户端没有收到消息。这是我的客户端套接字代码。

  • 真的需要你帮忙。 我的项目是通过电缆连接两台PC机,并使用tcp套接字将客户端文本框形式的字符串发送到服务器。问题是ATI只能发送一个字符串,然后连接就会关闭。 注意:某个端口上的连接将在表单加载中建立并成功。

  • 我们收到了这段代码,应该对其进行修改,以便无论何时客户端连接到服务器并发送消息,服务器都应该回复我听到了,伙计。这适用于一个或多个客户机,但下一个任务是,当新客户机连接时,服务器应该告诉所有其他已连接的客户机。 我以为这会很容易,但结果并不像我想象的那样。由于服务器总是得到sock 3,第一个客户端得到4,第二个客户端得到5等等,所以我尝试创建一个for循环,每当一个新客户端连接时,该循环就会向4