Socket问题!!
我写了下面的两个类,是想实C/S之间的通信.我要怎么设置类中的值,才能实现通信呢?我在运行SocketClient 时,出现java.net.ConnectException: Connection refused: connect的异常!请指教一下,小弟.
package urlsocket;
import java.net.*;
import java.io.*;
public class SocketClient {
Socket s=null;
DataInputStream instream=null;
DataOutputStream outstream=null;
public SocketClient() {
try{
init();
waitData();
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
void init() throws Exception
{
s=new Socket( "192.168.0.102 ",8765);
instream=new DataInputStream(s.getInputStream());
outstream=new DataOutputStream(s.getOutputStream());
s.setSoTimeout(3000);
}
void waitData()
{
while(true)
{
try{
String str=instream.readUTF();
System.out.println( "Client accept: "+str);
str=Integer.toString(Integer.parseInt(str)+1);
outstream.writeUTF(str);
}catch(Exception e)
{
System.out.println(e.toString());
break;
}
}
}
public static void main(String[] args) {
new SocketClient();
}
}
package urlsocket;
import java.net.*;
import java.io.*;
public class SocketServer {
ServerSocket ss=null;
Socket s=null;
DataInputStream instream=null;
DataOutputStream outstream=null;
public SocketServer() {
try{
init();
}catch(Exception e)
{
System.out.println(e.toString());
}
}
void init() throws Exception
{
ss=new ServerSocket(8765);
s.setSoTimeout(3000);
}
void waitForClient()
{
try{
s=ss.accept();
instream=new DataInputStream(s.getInputStream());
outstream=new DataOutputStream(s.getOutputStream());
outstream.writeUTF( "1 ");
s.setSoTimeout(3000);
waitData();
}catch(Exception e)
{
System.out.println(e.toString());
}
}
void waitData()
{
while(true)
{
try{
String str=instream.readUTF();
System.out.println( "Server accept: "+str);
int nu=Integer.parseInt(str)+1;
if(nu> 10)
{
System.out.println( "send end! ");
break;
}
else
{
str=Integer.toString(nu);
outstream.writeUTF(str);
}
}catch(Exception e)
{
System.out.println(e.toString());
break;
}
}
}
public static void main(String[] args) {
SocketServer socketserver = new SocketServer();
socketserver.waitForClient();
}
}
[解决办法]
就是先运行SocketServer.class类文件,
再运行 SocketClient.class类文件.
要不然client类在运行s=new Socket( "192.168.0.102 ",8765)的时候会发现8765这个接口没有被监听,所以会出错.
[解决办法]
回复人:zkf100() ( ) 信誉:1002007-03-22 21:51:10得分:0
?怎么启动server啊,我没有做过,可以说的具体一点吗?
----------------------------------
如果在同一机器上测试两个程序,启动server的方法:
java SocketServer localhost
再开一个cmd窗口
java SocketClient
[解决办法]
还有在同一机器上测试的时候,你的IP最好不要用192.168.0.102,用在路由器上的IP可能会有点问题.如果你有用socketImpl的话,再用这个IP,不然,请用127.0.0.1这个是本地IP.
