我的问题如下注释,那个服务端那里怎么改,老是意外处理了???
程序实现最简单的收发功能,客户段没问题,服务端注释那个地方有问题
平台eclipase服务端
------------------------------------------------------
/*
* Created on 2005-6-19
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package zhao;/**
* @author xiaozhao
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
import java.io.*;
import java.net.*;
public class serve { public static void main(String[] args)throws Exception {
int port=8080;
System.out.println("server had launch");
try{
ServerSocket s=new ServerSocket(port);
Socket socket=s.accept();
DataInputStream input=new DataInputStream(socket.getInputStream());
DataOutputStream output=new DataOutputStream(socket.getOutputStream());
while(true)
{
// System.out.println("----");
String message=input.readUTF(); //这里出错,在第2次收到消息的时候就出错了(第一次收到消息正常),请问怎么改阿???
if(message=="end")
break;
else
System.out.println("receive messages: "+message);
// output.writeUTF("had received");
}
socket.close();
s.close();
}catch(IOException e){System.out.println("error"); }
}
}
客户段
------------------------------------------------------------
/*
* Created on 2005-6-19
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package zhao;/**
* @author xiaozhao
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
import java.io.*;
import java.net.*;
public class client { public static void main(String[] args)throws IOException {
int port=8080;
InetAddress addr=InetAddress.getByName("localhost");
System.out.println("localhost="+addr);
try{
Socket socket=new Socket(addr,port);
// DataInputStream input=new DataInputStream(socket.getInputStream());
DataOutputStream output=new DataOutputStream(socket.getOutputStream());
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String message=in.readLine();
output.writeUTF(message);
}catch(IOException e){System.out.println("error");};
}
}
程序实现最简单的收发功能,客户段没问题,服务端注释那个地方有问题
平台eclipase服务端
------------------------------------------------------
/*
* Created on 2005-6-19
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package zhao;/**
* @author xiaozhao
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
import java.io.*;
import java.net.*;
public class serve { public static void main(String[] args)throws Exception {
int port=8080;
System.out.println("server had launch");
try{
ServerSocket s=new ServerSocket(port);
Socket socket=s.accept();
DataInputStream input=new DataInputStream(socket.getInputStream());
DataOutputStream output=new DataOutputStream(socket.getOutputStream());
while(true)
{
// System.out.println("----");
String message=input.readUTF(); //这里出错,在第2次收到消息的时候就出错了(第一次收到消息正常),请问怎么改阿???
if(message=="end")
break;
else
System.out.println("receive messages: "+message);
// output.writeUTF("had received");
}
socket.close();
s.close();
}catch(IOException e){System.out.println("error"); }
}
}
客户段
------------------------------------------------------------
/*
* Created on 2005-6-19
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package zhao;/**
* @author xiaozhao
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
import java.io.*;
import java.net.*;
public class client { public static void main(String[] args)throws IOException {
int port=8080;
InetAddress addr=InetAddress.getByName("localhost");
System.out.println("localhost="+addr);
try{
Socket socket=new Socket(addr,port);
// DataInputStream input=new DataInputStream(socket.getInputStream());
DataOutputStream output=new DataOutputStream(socket.getOutputStream());
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String message=in.readLine();
output.writeUTF(message);
}catch(IOException e){System.out.println("error");};
}
}
if(message=="end")
break;---------------------------------
第一次接受消息时,有没有用“end”把 socket.close()了?
正确的程序如下。客户端:package test;import java.io.*;
import java.net.*;public class Client { public static void main(String[] args) throws IOException { int port = 8080;
InetAddress addr = InetAddress.getByName("localhost");
System.out.println("localhost=" + addr); try {
Socket socket = new Socket(addr, port);
// DataInputStream input=new
// DataInputStream(socket.getInputStream());
DataOutputStream output = new DataOutputStream(socket
.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(
System.in));
String message = in.readLine();
while (!message.equals("end")) {
output.writeUTF(message);
message = in.readLine();
} } catch (IOException e) {
System.out.println("error");
}; }
}服务器端:
package test;import java.io.*;
import java.net.*;public class Server { public static void main(String[] args) throws Exception { int port = 8080;
System.out.println("server had launch"); try {
ServerSocket s = new ServerSocket(port);
Socket socket = s.accept();
DataInputStream input = new DataInputStream(socket.getInputStream());
DataOutputStream output = new DataOutputStream(socket
.getOutputStream()); while (true) {
// System.out.println("----");
String message = input.readUTF();
if (message.equals("end")) break;
else System.out.println("receive messages: " + message);
// output.writeUTF("had received");
}
socket.close();
s.close();
} catch (IOException e) {
System.out.println("error");
} }
}