Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区 » 实战错误讨论  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 Socket类如何使用?
chpfeng





发贴: 2
积分: 0
于 2006-03-10 19:30 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
今天从<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 !帮我解决了问题. 谢谢!




作者 Re:Socket类如何使用? [Re:chpfeng]
Skybus

黄昏日晕



发贴: 111
积分: 6
于 2006-03-10 20:37 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
这个程序在原书本上应该是没有问题的,估计是你抄错了一些代码段,下面是我修改后的,标记红色的是修改的!
服务器端:

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();
}
}
}


客户机端基本没错!

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



作者 Re:Socket类如何使用? [Re:chpfeng]
chpfeng





发贴: 2
积分: 0
于 2006-03-11 22:11 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
非常感谢你的回复!
下次再请教的时候,会加上 代码标记的!



作者 Re:Socket类如何使用? [Re:chpfeng]
YuLimin

简单就是美

版主


发贴: 866
积分: 123
于 2006-03-13 09:41 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Java代码一定要注意大小写,如果你是C/C++过来的就没有问题了。

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



 当兵不后悔!后悔不当兵! 
超越黎明时空,追逐时代潮流!
人,是要靠自己的!简单就是美!
我的Java:http://www.Java2Class.net
我的Blog:http://YuLimin.ItEye.com

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   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