您的位置:程序门 -> java -> j2se / 基础类



大家帮忙看看这段聊天程序


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


大家帮忙看看这段聊天程序
发表于:2007-03-25 11:46:49 楼主
import   java.io.*;
import   java.net.*;
public   class   testclient    
{
public   static   void   main(string[]   args)  
{
try
{
socket   socket   =   new   socket( "192.168.0.13 ",8000);

system.out.println( "服务ip地址---> "+socket);


inputstream   input   =   socket.getinputstream();

outputstream   output   =     socket.getoutputstream();

bufferedreader   buffer   =   new   bufferedreader(new   inputstreamreader(input));

printwriter   print   =   new   printwriter(output);

bufferedreader   buffer_line   =   new   bufferedreader(new   inputstreamreader(system.in));

string   s   =   buffer_line.readline();

while(true)
{
print.println(s);//把通过键盘输入的信息给服务端..

system.out.println( "客户端来的信息 "+s);

print.flush();//立刻给服务端

if   (s.equals( "quit "))
{
break;
}

system.out.println( "服务端发来的信息 "+buffer.readline());

s   =   buffer_line.readline();



}


buffer.close();
print.close();
socket.close();
}

catch(exception   e)
{
e.printstacktrace();
}

}
}


import   java.io.*;
import   java.net.*;
public   class   testserver  
{
public   static   void   main(string[]   args)  
{
try
{
serversocket   server     =   new   serversocket(8000);

socket   socket   =   server.accept();

system.out.println( "kehuip地址---> "   +   server);

inputstream   input   =   socket.getinputstream();

outputstream   output   =     socket.getoutputstream();

bufferedreader   buffer   =   new   bufferedreader(new   inputstreamreader(input));

printwriter   print   =   new   printwriter(output);

bufferedreader   buffer_line   =   new   bufferedreader(new   inputstreamreader(system.in));

string   s   =   buffer_line.readline();

while(true)
{
print.println(s);//把通过键盘输入的信息给服务端..

system.out.println( "服务端发来的信息 "+s);

print.flush();//立刻给服务端

if   (s.equals( "quit "))
{
break;
}

system.out.println( "客户发来的信息 "   +   buffer_line.readline());

s   =   buffer_line.readline();


 
buffer.close();
print.close();
}


socket.close();
}

catch(exception   e)
{
e.printstacktrace();
}

}
}


有点不太明白getinputstream   getoutputstream

是不是客户端调用getoutputstream就是把客户端键盘输入的消息给服务端

那getinputstream又是怎么回事...
大家可运行一下我的程序

怎么服务端没有收到客户端的消息

有帮忙改的请加上点注释...
发表于:2007-03-25 12:43:211楼 得分:0
高手过来帮忙指点一下...
发表于:2007-03-25 12:55:492楼 得分:0
inputstream是获得的
outputstream是输出的
发表于:2007-03-25 13:16:223楼 得分:0
getinputstream()   //获取这个连接的输入流
getoutputstream()   //获取这个连接的输出流

也就是说,server端getinputstream()   获取的输入流上的数据,
就是客户端getoutputstream()获取输出流所发出的数据,

简单点说,服务器端的输入流就是客户端的输出流 是对应的
发表于:2007-03-25 13:28:214楼 得分:0
又是秋水大哥
这个问题刚才已经领悟另外

可是秋水大哥   有没有运行一下程序

有个更大的问题就就是为什么客户端向服务端发送数据的时候服务端并没有手到客户端发的数据

可我用了fulsh()的
发表于:2007-03-25 13:40:335楼 得分:0
import   java.io.*;
import   java.net.*;
public   class   testclient    
{
public   static   void   main(string[]   args)  
{
try
{
socket   socket   =   new   socket( "localhost ",8000);
system.out.println( "服务ip地址---> "+socket);
inputstream   input   =   socket.getinputstream();
outputstream   output   =     socket.getoutputstream();
bufferedreader   buffer   =   new   bufferedreader(new   inputstreamreader(input));
printwriter   print   =   new   printwriter(output);
bufferedreader   buffer_line   =   new   bufferedreader(new   inputstreamreader(system.in));
string   s   =   buffer_line.readline();
while(true)
{
print.println(s);//把通过键盘输入的信息给服务端..
system.out.println( "客户端发出的信息 "+s);
print.flush();//立刻给服务端
if   (s.equals( "quit "))
break;
system.out.println( "服务端发来的信息 "+buffer.readline());
s   =   buffer_line.readline();
}
buffer.close();
print.close();
socket.close();
}catch(exception   e)
{
e.printstacktrace();
}

}
}

发表于:2007-03-25 13:41:526楼 得分:0
import   java.io.*;
import   java.net.*;
public   class   testserver  
{
public   static   void   main(string[]   args)  
{
try
{
serversocket   server     =   new   serversocket(8000);
socket   socket   =   server.accept();
system.out.println( "kehuip地址---> "   +   server);
inputstream   input   =   socket.getinputstream();
outputstream   output   =     socket.getoutputstream();
bufferedreader   buffer   =   new   bufferedreader(new   inputstreamreader(input));
printwriter   print   =   new   printwriter(output);
bufferedreader   buffer_line   =   new   bufferedreader(new   inputstreamreader(system.in));
string   s   =   " ";
while(true)
{
system.out.println( "客户发来的信息: "+   buffer.readline());
s   =   buffer_line.readline();
print.println(s);//把通过键盘输入的信息给服务端..
system.out.println( "服务端发出的信息 "+s);
print.flush();//立刻给服务端
if   (s.equals( "quit "))
break;

}  
buffer.close();
print.close();
socket.close();
}catch(exception   e)
{
e.printstacktrace();
}

}
}


哈哈,给你改了一下,你看看吧,编译运行没问题了,想加多线程,有点懒啦,
发表于:2007-03-25 13:45:497楼 得分:0
string   s   =   buffer_line.readline();

看到你testserver   while(true)上面的这句代码没???

就是说,服务器端一直等待你的输入,才可以执行下面的代码的,
输入流 的   readline();这个方法会阻塞的 

明白了吧?
发表于:2007-03-25 14:19:058楼 得分:0
明白了
接下来我要把它该为多线程


对了秋水大哥应该是过来人

还有个问题想问你

我们现在老师再讲数据结构就两天的时间要把它讲完

您看我应该掌握那些内容

递归我看了好久就不知道他的执行过程

选择排序
冒泡排序
二分查找到是掌握了...

其他的还应该掌握什么东西
发表于:2007-03-25 16:12:519楼 得分:0
两天,?也太快了吧,自己多了解些有好处的,我也说不上过来人啊,我只是个人爱好
递归其实很好理解的,说白了就是自己调用自己,
 到递归出口时,开始以次返回,类似堆栈的运行
其实能用循环实现的就不要用递归,效率要高一些的
不是有例题吗,多看看,哈哈


快速检索

最新资讯
热门点击