我正试图将我拥有的一个功能性UDP套接字转换为TCP,但我遇到了困难,因为我找不到解释为什么我无法获得在TCP上工作的输入。UDP中的相同代码也可以工作。在TCP中,我只得到一个"空白"输入。
客户端
elif cmd[0] == 'INSERT':
name = input("nNAME: ")
artist = input("ARTIST: ")
album = input("ALBUM NAME: ")
year = input("YEAR: ")
newsong = name + ";" + artist + ";" + album + ";" + year + "n"
sock.sendto(bytes(newsong, "UTF-8"), serv)
服务器端
elif cmd[0].upper() == 'INSERT':
with open("songs.txt", "a", encoding='UTF-8') as fd:
receive_message = con.recvfrom(TAM_MSG)
msg = receive_message[0]
fd.write(str(msg, "UTF-8"))
fd.close()
这完全适用于UDP,但不适用于TCP。有什么方法可以输入到TCP服务器吗?怎样非常感谢。
好吧,我读过关于TCP的文章,它需要有一个双向流,正如大家在评论中指出的那样。
在server.py
的开头只添加一行就成功了。
con.send(str.encode(f"Inserting a new song: "))
谢谢大家!
附言:这肯定不是最好的答案,因为我是个新手。我想我只是运气好,所以这对我来说很有效。