Chinaunix

标题: java Socket编程问题 [打印本页]

作者: wunesta    时间: 2009-12-14 13:31
标题: java Socket编程问题
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.StringTokenizer;

       
        public class cc {
       
        public static void main(String[] args) throws IOException{
               
                ServerSocket server=new ServerSocket(9997);  //在端口9999上注册服务
               
                Socket client=server.accept();       // 监听窗口,等待连接
       
                BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
       
        //DataBaseConnection abc = new DataBaseConnection();

        while(true){
                  
               
                String str=in.readLine();
               
                System.out.println(str);
               
                StringTokenizer token = new StringTokenizer(str ,";");
               
                System.out.println(str);
               
                String first=token.nextToken();//手机号
               
                System.out.println(first);
               
                String second=token.nextToken();//消息内容
               
                System.out.println(second);               
                }
        }
}




做了一个往端口发信息的程序 先连接服务器端口9997 显示连接成功  然后发送信息 123456789;aaaaaa  
程序没反应 我点断开后程序才显示
123456789;aaaaaa
123456789;aaaaaa
123456789
aaaaaa
null
断开后程序也停止了

Exception in thread "main" java.lang.NullPointerException
        at java.util.StringTokenizer.<init>(Unknown Source)
                at java.util.StringTokenizer.<init>(Unknown Source)
        at qq.cc.main(cc.java:35)



望各位高手指教如何修改 不用断开也能显示结果!因为是一直监听,有消息就报警!不知道如此表达各位高手能理解么!原谅我这个小菜鸟
作者: wunesta    时间: 2009-12-14 14:36
怎么没人呀!是我说的不清楚?
作者: jinyut    时间: 2009-12-14 14:53
public static void main(String[] args) throws IOException{

你试试这里直接抛Exception

我也是菜鸟。。
作者: wunesta    时间: 2009-12-14 15:05
试了  一样哦。。  还是感谢你
作者: ruknow    时间: 2009-12-14 20:25
然后发送信息 123456789;aaaaaa  
程序没反应 我点断开后程序才显示



发送方需要flush
作者: wunesta    时间: 2009-12-15 08:27
原帖由 ruknow 于 2009-12-14 20:25 发表



发送方需要flush




怎么flush  能说的详细点吗? 谢谢高手~
作者: wyfn18    时间: 2009-12-15 12:08
你客户端是怎么发的呀?
作者: friendmine    时间: 2009-12-15 13:03
发送方应该是送一个带回车符的字符串才成。
你最好把客户端的代码也弄出来。
应该没有太大的问题。
作者: wunesta    时间: 2009-12-15 13:41
我是做个监控端口有没有消息发来然后写入数据库的,和客户端应该没什么问题
客户端就是往本机的9997端口发送了这么一条消息123456789;aaaaaa
作者: ua    时间: 2009-12-15 14:42
测试这个程序没有问题,客户端有问题,
我是这么测试的
  1 启动java程序
  2 telnet localhost 9997
  3 再telnet那个窗口输入测试数据 123456789;aaaaaa 测试正常
  我用的 是 jdk1.6 windows xp
作者: babyblue_993    时间: 2010-03-18 22:36
不要用
String str=in.readLine();
来读数据,这样的话,如果发送端没有发送换行的话,你的程 序会一直卡在这里
另外建议LZ使用下调试,单步跟一下代码,问题就很明显了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2