import socket
import pygame
import sys
IP = socket.gethostbyname(socket.gethostname())
PORT = 5555
Biended_adrs = (IP, PORT)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(Biended_adrs)
server.listen()
conn, addr = server.accept()
print(f"{addr} connected!")
def Send(row, col):
data = str((row, col))
conn.send(data.encode())
def Receive():
data = conn.recv(1024)
return data.decode()
pygame.init()
display = pygame.display.set_mode((600, 600))
pygame.display.set_caption("Server")
GRAY = (100, 111, 111)
LineWidth = 10
def DrawLine():
pygame.draw.line(display, GRAY, (0, 200), (600, 200), LineWidth) # h1
pygame.draw.line(display, GRAY, (0, 400), (600, 400), LineWidth) # h2
pygame.draw.line(display, GRAY, (200, 0), (200, 600), LineWidth) # v1
pygame.draw.line(display, GRAY, (400, 0), (400, 600), LineWidth) # v2
DrawLine()
firstPlayer = conn.recv(1024)
player = firstPlayer.decode()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
mouseX = event.pos[0]
mouseY = event.pos[1]
clickedRow = int(mouseY // 200)
clickedCol = int(mouseX // 200)
if player == "1":
try:
Send(clickedRow, clickedCol)
player = "2"
conn.send(player.encode())
except Exception:
pass
else:
pass
if player == "2":
try:
Clientdata = Receive()
print(Clientdata, "Client Send!")
player = conn.recv(1024).decode()
print(player)
receive = False
except Exception:
pass
else:
pass
pygame.display.update()
client.py代码
import socket
import pygame
import sys
pygame.init()
display = pygame.display.set_mode((600, 600))
pygame.display.set_caption("Client")
HOST = socket.gethostbyname(socket.gethostname())
PORT = 5555
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((HOST, PORT))
draw = DrawLine()
def Send(row, col):
data = str((row, col))
client.send(data.encode())
def Receive():
data = client.recv(1024)
return data.decode()
GRAY = (100, 111, 111)
LineWidth = 10
def DrawLine():
pygame.draw.line(display, GRAY, (0, 200), (600, 200), LineWidth) # h1
pygame.draw.line(display, GRAY, (0, 400), (600, 400), LineWidth) # h2
pygame.draw.line(display, GRAY, (200, 0), (200, 600), LineWidth) # v1
pygame.draw.line(display, GRAY, (400, 0), (400, 600), LineWidth) # v2
firstPlayer = "1"
client.send(firstPlayer.encode())
player = "1"
while True:
for event in pygame.event.get():
If event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
mouseX = event.pos[0]
mouseY = event.pos[1]
clickedRow = int(mouseY // 200)
clickedCol = int(mouseX // 200)
if player == "2":
try:
Send(clickedRow, clickedCol)
player = "1"
client.send(player.encode())
except Exception:
pass
if player == "1":
try:
data = Receive()
print(data, "Server Send!")
player = client.recv(1024).decode()
print(player)
except Exception:
pass
else:
pass
pygame.display.update()
如果您查找文档:
https://docs.python.org/3/library/socket.html
socket.recv(bufsize[,flags])从套接字接收数据。返回值是一个bytes对象,表示接收到的数据。一次接收的最大数据量由bufsize指定。有关可选参数标志的含义,请参阅Unix手册页面recv(2);它默认为零。
conn.recv(1024, flags = socket.SOCK_NONBLOCK)
我有一个很奇怪的问题快把我逼疯了。 我有一个Ruby服务器和一个Flash客户端(动作脚本3)。这是一个多人游戏。 问题是,一切都在完美地工作,然后,突然,一个随机的球员停止接收数据。当服务器因为不活动而关闭连接时,大约20-60秒后,客户端接收到所有缓冲的数据。 null 我不认为这是一个操作系统/网络问题,因为我已经从一个位于西班牙的VPS换到了位于爱尔兰的亚马逊EC2,问题仍然存在。 我觉得
我正在用C语言编写一个服务器,使用POSIX sockets api。 这是作为GUI应用程序的一部分运行的,它需要能够停止和启动服务器监听和向客户端发送数据。 服务器的主要部分基本上是这样的(我排除了很多代码,因为其中一些与这个问题无关。) 换句话说: 让套接字监听连接 为select()调用设置fds 使用stdin调用select(),所有连接客户端套接字,以及获取从GUI发送的任何数据的管
我正在尝试用Java实现一个TFTP客户端。客户端在Localhost上运行良好,有时可以通过网络发送到TFTP服务器。然而,有时我的DatagramSocket会随机停止接收数据包。它将发送读/写请求,但永远不会收到服务器试图发送回的下一条消息。我已经检查了Wireshark,服务器确实在接收和尝试发送。防火墙在需要的地方被关闭。无法找出问题所在。以下是我正在使用的代码:
因此,我正在用Java编写一个程序,在DatagramSocket和DataGramPacket的帮助下发送和接收数据。问题是,当我发送数据/接收数据时,数据在我发送的程序中也会有所不同,但只是在某些情况下,比如: 但有时会起作用,比如:
当我尝试接收大量数据时,它会被切断,我必须按enter键才能获取其余数据。起初,我可以增加一点,但它仍然不会收到所有的。正如您所看到的,我增加了conn.recv()上的缓冲区,但它仍然无法获取所有数据。它会在某一点切断它。我必须在原始输入上按enter键才能接收其余数据。我是否可以一次获取所有数据?这是密码。
我使用Android应用程序通过TCP套接字与同一局域网上的PC java应用程序进行通信、发送和接收消息。下面是我在android中使用的Asynctask的代码,用于发送消息并从PC接收回复: } 我在onPostExcecute中的祝酒词中显示PC的回复。 Android通过BufferedWriter发送消息,而PC上的java应用程序在BufferedReader中接收消息。 PC在收到