Topic: Socket类如何使用?

  Print this page

1.Socket类如何使用? Copy to clipboard
Posted by: chpfeng
Posted on: 2006-03-10 19:30

今天从<Thinking in Java> 2nd edition 上找个例子,试一下Socket 如何使用.结果总是出错.请帮忙!谢谢!
//服务器端
import java.io.*;
import java.util.*;

public class JabberServer{
  public static final int PORT=8080;
  //int PORT=8080;
  public static void main(String []args) throws IOException{
    ServerSocket ss=new ServerSocket(PORT);
    System.out.println("Started..."+ss);
    try{
      Socket socket1=ss.accept();
      try{
        System.out.println("Connetion Accepted:"+socket1);
        BufferedReader in=new BufferedReader(socket1.getInputStream());
        PrintWriter out=new PrintWriter(new BufferedWriter
        (new OutputStreamWriter(socket1.getOutputStream())),true);
        while(true){
          String str=in.readline();
          if(str.equals("END")) break;
          System.out.println("Echoing:"+str);
          out.println(str);
          }
        }finally{
          System.out.println("Closing..");
         if(socket1!=null)
          socket1.close();
          }
      } finally {
         ss.close();
        }
    }
  }

编译出错信息:
JabberServer.java:7: 找不到符号
符号: 类 ServerSocket
位置: 类 JabberServer
ServerSocket ss=new ServerSocket(PORT);
^
JabberServer.java:7: 找不到符号
符号: 类 ServerSocket
位置: 类 JabberServer
ServerSocket ss=new ServerSocket(PORT);
^
JabberServer.java:10: 找不到符号
符号: 类 Socket
位置: 类 JabberServer
Socket socket1=ss.accept();
^
JabberServer.java:17: 找不到符号
符号: 方法 readline()
位置: 类 java.io.BufferedReader
String str=in.readline();
^
4 错误

//客户端程序
import java.io.*;
import java.net.*;

public class JabberClient{
    public static void main(String[]args) throws IOException{
    String host=null;
    if(args.length==1)
     host=args[0];    
    InetAddress ia=InetAddress.getByName(host);
    System.out.println("Address:"+ia);
    Socket socket1=new Socket(ia,JabberServer.PORT)  ;
    
    try{
      System.out.println("socket="+socket1);
      BufferedReader in=new BufferedReader(new InputStreamReader(socket1.getInputStream()));
      PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket1.getOutputStream())),true);
      
      for(int i=0;i<10;i++)
      {  out.println("howdy"+i);
      String str=in.readline();
      }
      out.println("END");
        } finally{
      System.out.println("Closing...");
      socket1.close();
      }
    }
  }

编译出错信息:
JabberClient.java:15: 找不到符号
符号: 变量 Socket
位置: 类 JabberClient
System.out.println("socket="+Socket);
^
JabberClient.java:21: 找不到符号
符号: 方法 readline()
位置: 类 java.io.BufferedReader
String str=in.readline();
^
.\JabberServer.java:7: 找不到符号
符号: 类 ServerSocket
位置: 类 JabberServer
ServerSocket ss=new ServerSocket(PORT);
^
.\JabberServer.java:7: 找不到符号
符号: 类 ServerSocket
位置: 类 JabberServer
ServerSocket ss=new ServerSocket(PORT);
^
.\JabberServer.java:10: 找不到符号
符号: 类 Socket
位置: 类 JabberServer
Socket socket1=ss.accept();
^
.\JabberServer.java:17: 找不到符号
符号: 方法 readline()
位置: 类 java.io.BufferedReader
String str=in.readline();
^
6 错误

谢谢哪位能帮忙解决问题!谢谢
在此感谢前几日给我作出 回复的 tigwin !帮我解决了问题. 谢谢!

2.Re:Socket类如何使用? [Re: chpfeng] Copy to clipboard
Posted by: Skybus
Posted on: 2006-03-10 20:37

这个程序在原书本上应该是没有问题的,估计是你抄错了一些代码段,下面是我修改后的,标记红色的是修改的!
服务器端:

import java.io.*;
import java.util.*;
import java.net.*;
public class JabberServer {
public static final int PORT = 8080;
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(PORT);
System.out.println("Started..." + ss);
try {
Socket socket1 = ss.accept();
try {
System.out.println("Connetion Accepted:" + socket1);
BufferedReader in = new BufferedReader(new InputStreamReader(
socket1.getInputStream()))
;
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket1.getOutputStream())),
true);
while (true) {
String str = in.readLine();
if (str.equals("END"))
break;
System.out.println("Echoing:" + str);
out.println(str);
}
} finally {
System.out.println("Closing..");
if (socket1 != null)
socket1.close();
}
} finally {
ss.close();
}
}
}


客户机端基本没错!

另外,你在贴代码时记得要加上代码标记,这样别人看的时候会方便一点!

3.Re:Socket类如何使用? [Re: chpfeng] Copy to clipboard
Posted by: chpfeng
Posted on: 2006-03-11 22:11

非常感谢你的回复!
下次再请教的时候,会加上 代码标记的!

4.Re:Socket类如何使用? [Re: chpfeng] Copy to clipboard
Posted by: YuLimin
Posted on: 2006-03-13 09:41

Java代码一定要注意大小写,如果你是C/C++过来的就没有问题了。

还有就是可以找个IDE来辅助帮你检查可能更好一些。。。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923