当前位置: 首页 > 面试题库 >

通过套接字发送字符串(python)

闻人献
2023-03-14
问题内容

我有两个脚本,Server.py和Client.py。我有两个目标:

  1. 为了能够一次又一次地从客户端向服务器发送数据。
  2. 为了能够将数据从服务器发送到客户端。

这是我的Server.py:

import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "192.168.1.3"
port = 8000
print (host)
print (port)
serversocket.bind((host, port))

serversocket.listen(5)
print ('server started and listening')
while 1:
    (clientsocket, address) = serversocket.accept()
    print ("connection found!")
    data = clientsocket.recv(1024).decode()
    print (data)
    r='REceieve'
    clientsocket.send(r.encode())

这是我的客户:

#! /usr/bin/python3

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host ="192.168.1.3"
port =8000
s.connect((host,port))

def ts(str):
   s.send('e'.encode()) 
   data = ''
   data = s.recv(1024).decode()
   print (data)

while 2:
   r = input('enter')
   ts(s)

s.close ()

该函数首次运行(“
e”进入服务器,我返回返回消息),但是如何使它一遍又一遍地发生(类似于聊天应用程序)?该问题在第一次之后开始。消息不会在第一次之后发送。我究竟做错了什么?我是python的新手,所以请详细说明一下,如果可以的话,请提供整个内容的源代码。


问题答案:
import socket
from threading import *

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "192.168.1.3"
port = 8000
print (host)
print (port)
serversocket.bind((host, port))

class client(Thread):
    def __init__(self, socket, address):
        Thread.__init__(self)
        self.sock = socket
        self.addr = address
        self.start()

    def run(self):
        while 1:
            print('Client sent:', self.sock.recv(1024).decode())
            self.sock.send(b'Oi you sent something to me')

serversocket.listen(5)
print ('server started and listening')
while 1:
    clientsocket, address = serversocket.accept()
    client(clientsocket, address)

对于您如何解决它,这是一个非常简单的设计。首先,您需要在进入while 1循环之前接受客户端(服务器端),因为在每个循环中您都接受一个新客户端,或者您按照我的描述进行操作,将客户端扔进一个单独的线程中,由他处理从现在开始拥有。



 类似资料:
  • 我需要通过Java socket发送一个文本消息到服务器,然后发送一个字节数组,然后是一个字符串等等。到目前为止,我所开发的内容还在工作,但客户端只读取发送的第一个字符串。 从服务器端:我使用发送字节数组,使用发送字符串。 问题是客户机和服务器不同步,我的意思是服务器发送字符串然后字节数组然后字符串,而不等待客户机消耗每个需要的字节。 我的意思是情况不是这样的:

  • 问题内容: 我如何使用getOutputStream方法发送一个strin。正如他们提到的,它只能发送字节。到目前为止,我可以发送一个字节。但不是字符串值。 提前致谢 问题答案: 如何使用PrintWriter: 编辑 :找到了我自己的答案,看到讨论了一个改进,但未列出。这是使用OutputStreamWriter编写字符串的更好方法:

  • 问题内容: 您好,我尝试使用Java中的客户端-服务器类发送文件。由于某种原因,当调用发送文件的方法时,套接字关闭。这是代码: 和来自客户端的代码: 和我得到的错误消息:严重:null java.net.SocketException:套接字已关闭 我对此并没有真正的经验,所以如果有帮助的话会很棒。 问题答案: 该方法返回一个,代表它实际读取的字节数。不能保证从字节数组中读取所需的字节数。它通常会

  • 我正试图通过Java的socket发送一个custome对象。我知道我需要将具有我需要发送的对象的类放在相同的包中,具有相同的serialVersionUID并实现Serializable。我已经这样做了,但我仍然不能通过套接字发送对象。我错在哪里了? 以下是客户端代码: 客户端中的类用户 发送user类对象的代码: 这里是服务器的代码: user类的代码:与客户端的user完全相同(我从客户端复

  • 我有一个问题,然后通过套接字发送列表,它必须是字节样的对象,好吧,我可以转换它字符串,然后做,但问题是字符串,这是很难重建它 列表从字符串,和从库 没有工作,然后我有这样的东西: 这就是问题所在,我必须拥有这些对象,我的问题是如何发送python对象而不需要将其转换为字符串,或者类似于JSON之类的对象符号? 这可以通过Python套接字文档在基本套接字服务器上进行测试。 失败的文本评估: 错误:

  • 问题内容: 我正在尝试通过linux套接字发送一些文件描述符,但是它不起作用。我究竟做错了什么?应该如何调试这样的东西?我尝试将perror()放到所有可能的地方,但是他们声称一切正常。这是我写的: 问题答案: 史蒂文斯(etal)[UNIX®网络编程,第1卷:套接字网络API描述了在第15章 Unix域协议 (尤其是第15.7节:_传递描述_符)中的过程之间传输文件描述符的过程。对此进行完整描述