服务端:
     import java.io.*;// 导入io包import java.net.*; //网络包   public class chatSur {
     public static void main(String[] str){//程序入口
        ServerSocket soc; 
        Socket svrSoc; //
        ObjectOutputStream objOut=null;
        ObjectInputStream objIn=null;//          try {
            
soc=new ServerSocket(7000); // 创建服务器对象 端口6666
System.out.println("Waiting for client's connecting...");
svrSoc=soc.accept(); // 等待连接
System.out.println("The client connected, you can Exit this program by type 'QUIT'");
objOut=new ObjectOutputStream(svrSoc.getOutputStream());//输出流发送信息用的 
objIn=new ObjectInputStream(svrSoc.getInputStream());// 输入流
}catch(Exception e){
e.printStackTrace();
System.exit(0);//捕获到异常退出程序

sendMsgOut send=new sendMsgOut(objOut);//创建发送线程对象
send.start();//启动线程
getMsgFromClient get=new getMsgFromClient(objIn);//创建
get.start();
}
}class sendMsgOut extends Thread{//发送信息线程类ObjectOutputStream objOut = null;public sendMsgOut(ObjectOutputStream out){//发送方法 接收参数为输出流
objOut = out;
}
public void run()
{
String strMsg = "";
while (true)//无限循环
{
try {
strMsg = (new BufferedReader(new InputStreamReader(System.in))).readLine();//键盘输入信息,回车结束
objOut.writeObject(strMsg);//信息写入输出流
if (strMsg.equals("QUIT"))//如果输入信息等于QUIT
System.exit(0);//推出} catch (Exception e) {
}// System.out.println(strMsg);
}
}
}class getMsgFromClient extends Thread{//接收信息线程,跟上边差不多
ObjectInputStream objIn;
public getMsgFromClient(ObjectInputStream in){//接收方法
this.objIn = in;
}
public void run()
{
String strMsg = "";
while (true)
{
try {
strMsg = (String) objIn.readObject();//从输入流接收信息
System.out.println("The client said:" + strMsg);//打印信息到屏幕
if (strMsg.equals("QUIT"))
System.exit(0);//如果接收到信息为QUIT 推出
} catch (Exception e) {
}
}}}客户端:
  
       import java.io.*;// 导入io包import java.net.*; //网络包   public class ccc {
    static String ip ;
   
    public String getIP()
{
try
{
InetAddress addr = InetAddress.getLocalHost();
      ip=addr.getHostAddress().toString();//获得本机IPaddress=addr.getHostName()toString;//获得本机名称        }
         catch(Exception e)
            {System.out.println("Bad IP Address!"+e);} 
       return ip ;
}
     public static void main(String[] str){//程序入口
        
        Socket clSoc; 
        ObjectOutputStream obOut=null;
        ObjectInputStream obIn=null; 
                try {
           
       clSoc = new Socket("198.162.1.98",6900);
 System.out.println(" connected, you can Exit this program by type 'QUIT'");
 obOut=new ObjectOutputStream(clSoc.getOutputStream());//输出流发送信息用的 
 obIn=new ObjectInputStream(clSoc.getInputStream());// 输入流
}catch(Exception e){
e.printStackTrace();
System.exit(0);//捕获到异常退出程序

sendMsgOut send=new sendMsgOut(obOut);//创建发送线程对象
send.start();//启动线程
getMsgFromClient get=new getMsgFromClient(obIn);//创建
get.start();
}
}class sendMsgOut extends Thread{//发送信息线程类ObjectOutputStream objOut = null;public sendMsgOut(ObjectOutputStream out){//发送方法 接收参数为输出流
this.objOut = out;
}
public void run()
{
String strMsg = "";
while (true)//无限循环
{
try {
strMsg = (new BufferedReader(new InputStreamReader(System.in))).readLine();//键盘输入信息,回车结束
objOut.writeObject(strMsg);//信息写入输出流
if (strMsg.equals("QUIT"))//如果输入信息等于QUIT
System.exit(0);//推出} catch (Exception e) {
}// System.out.println(strMsg);
}
}
}class getMsgFromClient extends Thread{//接收信息线程,跟上边差不多
ObjectInputStream objIn;
public getMsgFromClient(ObjectInputStream in){//接收方法
this.objIn = in;
}
public void run()
{
String strMsg = "";
while (true)
{
try {
strMsg = (String) objIn.readObject();//从输入流接收信息
System.out.println("The client said:" + strMsg);//打印信息到屏幕
if (strMsg.equals("QUIT"))
System.exit(0);//如果接收到信息为QUIT 推出
} catch (Exception e) {
}
}}}错误信息:     java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:519)
    at java.net.Socket.connect(Socket.java:469)
    at java.net.Socket.<init>(Socket.java:366)
    at java.net.Socket.<init>(Socket.java:180)
    at ccc.main(ccc.java:29)

解决方案 »

  1.   

    soc = new ServerSocket(7000);
    clSoc = new Socket("198.162.1.98",6900);
      

  2.   

    clSoc = new Socket("198.162.1.98",6900);端口号些错了,连接不上。
      

  3.   

    那如果想让两端传递自定义的类信息,例如:
          class a
           {
              String c;
              String d;
              int e;
              public a(String c,String d ,in e )
                 {
                     this.c=c;
                     this.d=d;
                     this.e=e;
                 }
          }
    这样该怎样改,我改了后又出现这样的报错:
                  Exception in thread "main" java.lang.NoSuchMethodError: sendMsgOut.<init>     ( Lrinfo;Ljava/io/ObjectOutputStream;)V
        at ser.main(ser.java:38)