1.什么是socket

简单解释就是:socket就是端口号与网络地址的组合。以下就是socket的应用:客户端给服务器端传递一张图片,服务器端接受图片并且反馈“收到”信息,客户端接受反馈信息。

2.代码(客户端)

 @Testpublic void Client() throws IOException {//1.InetAddress表示一个ip地址对象,类似于new File("path")              //这里的 getLocalHost()表示获取本机的IP地址对象InetAddress inetAddress = InetAddress.getLocalHost();//Socet套接字有一个有参的构造方法就是传入ip地址对象和服务器的端口号Socket socket = new Socket(inetAddress,8532);//这里的path的相对路径是src下的相对路径//或者绝对路径File f = new File("path");//获得file文件的节点流FileInputStream fis = new FileInputStream(f);//获得输出流,通过fis读取的文件写入outputStream中,然后socket会将      // 写进去的数据发送给服务器端。OutputStream outputStream = socket.getOutputStream();byte[]  buff = new byte[10];int len;while((len = fis.read(buff)) != -1){outputStream.write(buff,0,len);}//该方法作用,让客户端的socket的outputStream流关闭,但是不会断开和服务器端的连接//通俗来说就是 ,该方法通知服务器:"我的数据发送结束了,你还有什么事要交代的吗"?//如果没有该方法,服务器就不知道客户端是否发送数据结束。从而一直出现等待状态。//进而服务器端不会执行InputStream is = accept.getInputStream();之后的代码,因为它一直等待   //继续获取//该方法结束后就看服务器端的代码了socket.shutdownOutput();
//--------------------------------------------------------------------------------------------//获得服务器端反馈的数据InputStream inputStream = socket.getInputStream();//将服务器传过来的字节流转换成字符流InputStreamReader isr = new InputStreamReader(inputStream);int  buf;//输出字符流(即得到服务器端反馈过来的数据)while(( buf= isr.read())!= -1){System.out.print((char) buf);}//以下的流关闭不做解释(这里省略了try-catch)isr.close();inputStream.close();outputStream.close();fis.close();socket.close();}

3.代码(服务器端)

@Testpublic void Server() throws IOException {//构造一个服务器端的socket,注意这里是serverSocket//不是socket ,这个对象只需要指定服务器自己的端口号ServerSocket socket = new ServerSocket(8532);//new文件对象File file = new File("src\\...");//通过accept()获得socket对象Socket accept = socket.accept();//获得文件输出流,指定从客户端接收的文件的存储位置FileOutputStream fos = new FileOutputStream(file);//通过socket获得InputStream对象,获得客户端发送过来的数据InputStream is = accept.getInputStream();//将客户端发送过来的数据写入fos对象指定的位置byte[]  buff = new byte[10];int len;while((len = is.read(buff)) != -1){fos.write(buff,0,len);}//与客户端同理accept.shutdownInput();//服务器端反馈OutputStream os1 =  accept.getOutputStream();os1.write("发送成功!".getBytes());//以下的流关闭不做解释(这里省略了try-catch)os1.close();is.close();fos.close();accept.close();socket.close();}

java网络编程Socket客户端给服务器端通信相关推荐

  1. Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例

    Java网络编程 Socket.ServerSocket 详解,方法介绍及完整代码示例 概念 什么是网络编程? 网络编程是指编写运行在多个设备(计算机)的程序,这些设备通过网络连接起来.当这些通过网络 ...

  2. java网络编程socket\server\TCP笔记(转)

    java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04|  分类: Socket |  标签:java  |举报|字号 订阅 1 TCP的开销 a  连接 ...

  3. java网络编程Socket实现客户端向服务端发送信息

    (可按目录按需阅读,我一般会整理的比较细) 前置知识 java IO Socket 什么是socket?socket字面意思其实就是一个插口或者套接字,包含了源ip地址.源端口.目的ip地址和源端口. ...

  4. JAVA 网络编程 Socket 详细说明,实现客户端和服务端相互推送消息

    客户端代码: package com.lcx.socket;import java.io.BufferedReader; import java.io.BufferedWriter; import j ...

  5. 【Java 网络编程】客户端 Socket 创建

    文章目录 I TCP 无代理或无参构造函数 II 创建 Socket 时指定代理 III 创建 Socket 时直接指定服务器地址和端口号 IV 创建 Socket 时直接指定服务器地址和端口号 并绑 ...

  6. 【Java 网络编程】客户端 Socket 配置 ( 超时时间 | 端口复用 | Nagle 算法 | 心跳包机制 | 连接关闭机制 | 缓冲区大小 | 性能权重设置 | 紧急数据设置 )

    文章目录 I 设置读取超时时间 II Socket 复用绑定端口设置 III 开启 Nagle 算法 ( 沾包 ) IV 心跳包机制 V 连接关闭处理 VI Socket 紧急数据内敛设置 VII S ...

  7. Java网络编程——Socket 编程

    Socket 编程 Socket编程是在TCP/IP上的网络编程,但是Socket在上述模型的什么位置呢.这个位置被一个天才的理论家或者是抽象的计算机大神提出并且安排出来 我们可以发现Socket就在 ...

  8. JAVA网络编程Socket常见问题 【长连接专题】

    一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...

  9. Java——网络编程(UDP与TCP通信及实现聊天案例)

    目录 1.什么是网络通信协议? 2.TCP/IP协议 3.协议分类 3.1.UDP协议 3.2.TCP协议 4.网络编程三大要素 4.1.协议 4.2.IP地址 4.3.端口号 5.InetAddre ...

  10. Java实现简易TCP客户端、服务器端通信程序

    本学期计算机网络课程要求完成一个TCP和一个UDP的通信程序,我完成了功能的简单实现,下面讲讲我的TCP程序的实现.(UDP的见另一篇博客) 目录 效果展示 一.项目结构 二.完整代码 1.TCPCl ...

最新文章

  1. 找出最接近的相似串(DP思想)
  2. 最小二乘法多项式曲线拟合原理与实现--转
  3. Android网格视图(GridView)
  4. 2018.10.13 bzoj1834: [ZJOI2010]network 网络扩容(最大流+费用流)
  5. P6030-[SDOI2012]走迷宫【高斯消元,tarjan,期望dp】
  6. mysql建表的规则_MYSQL建表规则 - Love彼岸花开的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 如何在 PyFlink 1.10 中自定义 Python UDF?
  8. POJ 3422 费用流
  9. cubic差值matlab,matlab自带的插值函数interp1的四种插值方法
  10. 移动硬盘插上电脑卡住_担心移动硬盘一摔资料就没了,试试这个三防户外硬盘盒...
  11. 进制转换—任意进制乘法表
  12. CIO如何计算信息化的投资回报率?
  13. 全国计算机将文件属性隐藏,一键玩转隐藏属性文件
  14. 企业邮箱服务器如何设置?
  15. Python中numpy的np.where()函数
  16. MoSE论文中Sequential Synthetic Dataset生成代码(时间序列多任务学习数据集)
  17. 线性代数 | (4) n维向量
  18. Mac环境下简化ssh连接vlab口令实现免密登录(UNSW)
  19. app应用程序的好处
  20. 软考高级软件架构师学习笔记一(软件架构设计)

热门文章

  1. Flash Player教育版是什么?和普通版有何区别?
  2. qt超级马里奥_探索《超级马里奥》 35周年选集
  3. 使用HTML编写浣溪沙,浣溪沙_巅峰Hacker_新浪博客
  4. 各种梯度算法总结 + Total Variation
  5. windows 2000 密钥
  6. 菜鸟晋级篇!一篇文章读懂看门狗定时器!
  7. 【discuzX2】模板解析语法就template()函数分析
  8. 1秒等于1000毫秒, 1毫秒等于1000微秒,1微秒等于1000纳秒
  9. html5做出toast效果,toast提示效果
  10. 几款任意波形发生卡推荐