黑马程序员技术交流社区

标题: TCP问题 [打印本页]

作者: 李志广    时间: 2012-8-3 11:01
标题: TCP问题
import java.io.*;
import java.net.*;
class  TcpClient2
{
        public static void main(String[] args) throws Exception
        {
                Socket s=new Socket("192.168.0.6",10003);
                OutputStream out=s.getOutputStream();
                out.write("服务端你好!".getBytes());
                InputStream in=s.getInputStream();
                byte[] buf=new byte[1024];
                int len=0;
                while((len=in.read(buf))!=-1)
                        {
                        System.out.println(new String(buf,0,len));
                        }
                s.close();
        }
}
class  TcpServer2
{
        public static void main(String[] args) throws Exception
        {
                ServerSocket ss=new ServerSocket(10003);
                Socket s=ss.accept();
                String ip=s.getInetAddress().getHostAddress();
                System.out.println(ip+".....connected");
                InputStream in=s.getInputStream();
                byte[] buf=new byte[1024];
                int len=0;
                while((len=in.read(buf))!=-1)
                        {
                        System.out.println(new String(buf,0,len));
                        }
                OutputStream out=s.getOutputStream();
                out.write("客户端你好!".getBytes());
        s.close();
        ss.close();
        }
}

打印结果怎么没有显示:客户端你好! 到底哪出错啦?帮忙看一下!!!谢谢



搜狗截图_2012-08-03_10-58-42.png (2.15 KB, 下载次数: 10)

搜狗截图_2012-08-03_10-58-42.png

作者: 杨智    时间: 2012-8-3 22:32
我帮你解决了 你看下面的代码吧

import java.io.*;
import java.net.*;

public class TcpClient2 {
        public static void main(String[] args) throws Exception {
                Socket s = new Socket("127.0.0.1", 10013);
                OutputStream out = s.getOutputStream();
                out.write("服务端你好!".getBytes());
               
                InputStream in = s.getInputStream();
                byte[] buf = new byte[1024];
                int len = 0;
                while ((len = in.read(buf)) != -1) {
                        System.out.println(new String(buf, 0, len));
                }
                s.close();
        }
}

class TcpServer2 {
        public static void main(String[] args) throws Exception {
                ServerSocket ss = new ServerSocket(10013);
                Socket s = ss.accept();
                String ip = s.getInetAddress().getHostAddress();
                System.out.println(ip + ".....connected");
                InputStream in = s.getInputStream();
                byte[] buf = new byte[1024];
                int len = 0;
                while ((len = in.read(buf)) != -1) {
                        System.out.println(new String(buf, 0, len));
                        OutputStream out = s.getOutputStream();
                        out.write("客户端你好!".getBytes());
                        out.flush();
                       
                }
                s.close();
                ss.close();
               
        }
}

作者: 李志广    时间: 2012-8-3 23:26
杨智 发表于 2012-8-3 22:32
我帮你解决了 你看下面的代码吧

import java.io.*;

哦,谢谢!!!问题已解决!!!!
作者: 胡文凡    时间: 2012-8-4 09:47
楼上的解决方案明显是类似投机的
楼主的问题关键在于服务端的
while((len=in.read(buf))!=-1)
                        {
                        System.out.println(new String(buf,0,len));
                        }
得不到结束。即客户端没有发送一个结束标记过来。





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