已解决 =我的服务器代码需要放置在正确的位置。在EventQueue.Invokeletter {}之外;
当我运行客户端并单击“登录”按钮时,客户端无法连接到服务器。
第一次使用它时,它可以正常工作,但是我的客户端无缘无故无法连接到服务器。
我该怎么做才能正确呢?
服务器代码
import random
def rollDie():
return random.choice([1,2,3,4,5,6])
def roll_first():
if random.choice([0,1]) == 0:
return 'A'
else:
return 'B'
def rollSim():
while True:
turn = roll_first()
numTrials = 10
numThrows = 10000
totalThrows = numTrials*numThrows
game_on = True
winsA = 0
winsB = 0
while game_on:
for n in range(numTrials):
games = 0
for i in range(numThrows):
throw = rollDie()
if turn == 'A':
if throw == 6:
winsA += 1
games += 1
break
else:
turn = 'B'
else:
if throw == 6:
winsB += 1
games += 1
break
else:
turn = 'A'
return winsA/totalThrows
客户代码
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
new mainmenu().setVisible(true);
ServerSocket ss=new ServerSocket(1234);
Socket socket1=ss.accept();
} catch (IOException ex) {
Logger.getLogger(mainmenu.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
答案 0 :(得分:1)
这里:
ServerSocket ss=new ServerSocket(1234);
Socket socket1=ss.accept();
等待一个客户端连接。然后,您的run()
方法处理该客户端...并结束!
如果您想让代码再次 等待,则需要在代码的那部分周围放置一个循环。
换句话说:您编写的代码将打开服务器套接字,等待传入的连接,处理该连接,然后...消失。如果您希望随着时间的推移为一个以上的客户提供服务,则只要“服务器”程序启动并运行,就需要用一个循环来替换“淡出”部分,该循环一直在等待新的客户。