我有一個類實現了serversocket類,還有另一個類實現了客戶端1. Socket類。套接字無法接收數據
所以我想要做的是。在獲取流之後,我希望客戶端向服務器發送一個數字,然後服務器會反過來響應客戶端是否爲素數。顯示在awt.Label
中。
但我無法收到任何迴應。
下面是客戶端的構造函數的代碼:
public ClientIsPrime()
{
setLayout(new GridLayout(2,2));
add(new Label("Enter a number: "));
add(numEntry=new TextField(10));
add(checkPrime=new Button("Check if number is Prime"));
add(result=new Label("Result is shown here"));
try
{
Socket client = new Socket(InetAddress.getLocalHost(), 5959);
in=client.getInputStream();
out=client.getOutputStream();
}catch(UnknownHostException e)
{
result.setText("Local Host cannot be resolved");
}catch(IOException e)
{
result.setText("IOException occured");
}
checkPrime.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
try
{
int num;
num=Integer.parseInt(numEntry.getText());
out.write(num);
out.flush();
int c;
result.setText("");
String s="";
while((c=in.read())!=-1)
s+=((char)c);
result.setText(s);
}catch(IOException e)
{
result.setText("IOException occured");
}catch(NumberFormatException e)
{
result.setText("Please enter a valid number.");
}
}
});
}
代碼服務器:
public static void main(String args[])throws IOException
{
server=new ServerSocket(5959);
socket=server.accept();
System.out.println("connected");
InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();
int c; String numStr="";
while((c=in.read())!=-1)
numStr+=((char)c);
int num=Integer.parseInt(numStr);
if(num==3)
out.write("Number is Prime".getBytes());
else
out.write("Number is not Prime".getBytes());
out.flush();
in.close();
out.close();
}
它不是一個真正的應用程序。我正在學。
素數實現不正確..但不需要任何東西..只是想測試消息是否正在傳輸或不.. ..就這樣做..我會很好地寫入素數實現。 。 – ritesht93 2012-01-08 23:30:43
從我所瞭解的有關java套接字的知識中,您可以正確地做到這一點。您的端口是否已轉發並且防火牆已關閉? – Axis 2012-01-08 23:42:53
因此,澄清:是服務器收到素數的問題,但客戶端永遠不會收到響應? – chradcliffe 2012-01-08 23:45:32