黑马程序员技术交流社区

标题: 关于网络通信的问题 [打印本页]

作者: 我为你着迷    时间: 2015-1-1 16:18
标题: 关于网络通信的问题
import java.io.*;
import java.net.*;
class TransClient
{
        public static void main(String[] args) throws Exception
        {
                Socket s=new Socket("192.168.1.101",10005);
               
                //定义读取键盘数据的流对象
                BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
               
                //定义目的,将数据写入到socket输出流。发给服务端。
                BufferedWriter bufOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//目的是socket输出流
               
                //定义一个socket读取流,读取服务端返回的大写信息.
                BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
                       
               
                String line=null;
                while((line=bufr.readLine())!=null)//读取键盘
                {
                        if("over".equals(line))
                                        break;
                               
                               
                  bufOut.write(line);
                  bufOut.newLine();
                  bufOut.flush();
                  
                  String str=bufIn.readLine();//读取服务端
                  System.out.println("server:"+str);
                }
               
                bufr.close();
                s.close();
        }
}

/*
服务端:
源:socket读取流
目的:socket输出流。
都是文本 装饰。
*/
class TranServer
{
        public static void main(String[] args) throws Exception
        {
                ServerSocket ss=new ServerSocket(10005);
               
                Socket s=ss.accept();
               
                String ip=s.getInetAddress().getHostAddress();
                System.out.println(ip+"...connected");
               
                //读取socket读取流中的数据
                BufferedReader         bufln=new BufferedReader(new InputStreamReader(s.getInputStream()));
               
                //目的socket输出流,将大写数据写入到socket输出流并发送给客户端。
                BufferedWriter bufOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
               
                String line=null;
                while((line=bufln.readLine())!=null)
                {
                        bufOut.write(line.toUpperCase());       
                        bufOut.newLine();
                        bufOut.flush();
                }
                s.close();//关掉客户端
                ss.close();//关掉服务端。
        }       
}

大家好  谁能帮我看下这段代码啊 就是我在客户端录入数据之后在服务端显示不出来,代码是和视频里一样的,刷新也刷了换行也换了 就是不行 真是见鬼了  非常的郁闷  哪位大神或者版主帮我看下啊谢谢了黑马币大量奉上啊 谢谢了


作者: 南柯一梦境    时间: 2015-1-1 16:43
你用的是Eclipse么,别的不知道,反正我用Eclipse时候就不能用,但是改用命令行编译运行的时候就能用。不知道怎么回事。如果你用是Eclipse就用命令行的方式运行一下试试吧。
作者: 我为你着迷    时间: 2015-1-1 17:04
南柯一梦境 发表于 2015-1-1 16:43
你用的是Eclipse么,别的不知道,反正我用Eclipse时候就不能用,但是改用命令行编译运行的时候就能用。不知 ...

我还没用Eclipse呢   用的是高级编辑器  就是命令行的呢   哥们  你把这个代码复制到你编辑器试下看看行不行  
作者: 常强儿    时间: 2015-1-1 23:00
代码为什么不粘到代码块中?

作者: kerner    时间: 2015-1-1 23:34
大家好  谁能帮我看下这段代码啊 就是我在客户端录入数据之后在服务端显示不出来,代码是和视频里一样的,刷新也刷了换行也换了 就是不行

就是我在客户端录入数据之后在服务端显示不出来?
服务器端你本来就没有写输出到打印控制台上啊。。。。。

服务器端能显示   192.168.xxx.xxx...connect  吗?
如果没有显示则表示未连接成功,可能你的IP有变化了,改IP,还是不行,就换另一端口试一试。如果还是无连接的话,没必要折腾了。
作者: 我为你着迷    时间: 2015-1-2 00:13
常强儿 发表于 2015-1-1 23:00
代码为什么不粘到代码块中?

我代码粘贴进去的时候代码总是不对齐  看着很难看呢
作者: 李票    时间: 2015-1-2 02:30
谢谢楼主分享,又学到很多东西
作者: 我为你着迷    时间: 2015-1-2 10:38
kerner 发表于 2015-1-1 23:34
大家好  谁能帮我看下这段代码啊 就是我在客户端录入数据之后在服务端显示不出来,代码是和视频里一样的, ...

哥们问下你哦 你说这里边这么多的资源  为啥只关闭了 bufr.close();   s.close();呢  
              
作者: kerner    时间: 2015-1-2 12:23
我为你着迷 发表于 2015-1-2 10:38
哥们问下你哦 你说这里边这么多的资源  为啥只关闭了 bufr.close();   s.close();呢  
               ...

从套接字getInputStream or getOutputStream获取的流,在s.close()方法中,应该会被自动调用关闭。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2