A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 火七君 中级黑马   /  2015-3-13 15:33  /  1148 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 火七君 于 2015-3-13 15:37 编辑
  1. /*
  2. 需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息。
  3. */  
  4. //客户端  
  5. import java.net.*;  
  6. import java.io.*;  
  7. class  TcpClient  
  8. {  
  9.     public static void main(String[] args) throws Exception  
  10.     {  
  11.         //1、创建客户端的Socket服务。指定目的主机和端口  
  12.         Socket s=new Socket("127.0.0.1",10000);  
  13.         //2、获取Socket流中输出流,发送数据  
  14.         OutputStream out=s.getOutputStream();  
  15.         out.write("你好!".getBytes());  
  16.         //3、获取Socket流中的输入流,用来接收服务端的反馈信息并打印  
  17.         InputStream in=s.getInputStream();  
  18.          
  19.         byte[] buf=new byte[1024];  
  20.         int len=in.read(buf);//读取反馈的数据  
  21.   
  22.         //输出接收的数据  
  23.         System.out.println(new String(buf,0,len));  
  24.   
  25.         s.close();//关闭资源  
  26.     }
复制代码

其中第14行中OutputStream out=s.getOutputStream();  从语法角度讲创建对象不应该是有new吗,很多地方都没有new我不理解,我相信有很多人也不理解,请各位大神指点!!!

5 个回复

倒序浏览
因为TCP是面向连接的,三次握手,所以在创建Socket对象是就应该知道具体地址。
连接成功后就建立了通道,socket流产生了。只要获取socket流中的读取流和写入流即可,
        只要通过getInputStream和getOutputStream就可以获取两个流对象。。
回复 使用道具 举报 1 0
本帖最后由 wdhm5423 于 2015-3-13 16:02 编辑

OutputStream out=s.getOutputStream();这是在调用方法。
函数体是这样的:
public OutputStream  getOutputStream(){
      *********
      return OutputStream对象;
}
调用该方法会获得一个OutputStream对象,也就是Socket的输出流对象。

单例设计模式学过了吧,getInstance()方法返回一个单例对象,一样的道理。

回复 使用道具 举报 1 0
艺多不压身丶 发表于 2015-3-13 15:48
因为TCP是面向连接的,三次握手,所以在创建Socket对象是就应该知道具体地址。
连接成功后就建立了通道,so ...

恩,学习了
回复 使用道具 举报
wdhm5423 发表于 2015-3-13 16:00
OutputStream out=s.getOutputStream();这是在调用方法。
函数体是这样的:
public OutputStream  getOutpu ...

恩,写的好详细。谢谢了
回复 使用道具 举报
getOutputStream();是直接返回这个Socket对象的输出流,这个流应该是对象本身自己已经建立好了 你只是拿到而已
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马