client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server

URL:协议+IP+端口+资源位置

客户端:

  1. InetAddress 获取本地IP:写入服务器的端口号:xxxx
  2. 创建一个Socket连接(丢入IP和端口)
  3. 发送消息IO流(socket.getOutputStream();)
  4. 关闭

服务器:

  1. 服务端的建立一个端口:ServerSocket
  2. 监听客户端发过来的信息:serverSocket.accept();
  3. 读取客户端的信息(信息对于服务器管道是写入-就是输入流):accept.getInputStream();
  4. 管道流获取数据处理
  5. 关闭

客户端:代码实现

 1 package Demo1.JavaSe.javasocket;
2
3 import java.io.IOException;
4 import java.io.OutputStream;
5 import java.net.InetAddress;
6 import java.net.Socket;
7 import java.net.UnknownHostException;
8
9 //Socket编程客户端
10 public class JavaSocketClientG {
11 public static void main(String[] args) throws IOException {
12 Socket socket = null;
13 InetAddress ServerIP=null;
14 OutputStream outputStream=null;
15 try {
16 //1.要知道服务器端口号
17 ServerIP = InetAddress.getByName("127.0.0.1");
18 //端口号
19 int port = 9999;
20 //2.创建一个Socket连接
21 socket = new Socket(ServerIP, port);
22 //3.发送消息IO流
23 //client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server
24 outputStream = socket.getOutputStream();
25 outputStream.write("你好,我发送信息过来了!!!".getBytes());
26
27
28 } catch (UnknownHostException e) {
29 e.printStackTrace();
30 } catch (IOException e) {
31 e.printStackTrace();
32 }finally {
33
34 if (outputStream != null) {
35 outputStream.close();
36 }
37 if (socket != null) {
38 socket.close();
39 }
40 }
41
42
43 }
44 }

服务器:代码实现

package Demo1.JavaSe.javasocket;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket; //Socket编程服务端
public class JavaServiceSocketG {
//Ctrl+Alt+L 格式化代码 public static void main(String[] args) {
//alt +enter 补全/提示
// Ctrl+Alt+O 优化导入的类和包
//ctrl+alt+t 选中,自动选择try-catch
ServerSocket serverSocket=null;
Socket accept=null;
InputStream inputStream=null;
ByteArrayOutputStream byteArrayOutputStream=null;
try {
//client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server
//1.服务端的有一个端口
serverSocket= new ServerSocket(9999);
//2.监听客户端发过来的信息
accept= serverSocket.accept();
//3.读取客户端的信息(信息对于服务器管道是写入-就是输入流)
inputStream= accept.getInputStream();
//4.管道流获取数据处理
byteArrayOutputStream= new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len= inputStream.read(buffer))!=-1){
byteArrayOutputStream.write(buffer,0,len);
}
System.out.println(byteArrayOutputStream.toString()); } catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(serverSocket!=null){
serverSocket.close();
}
if (accept!=null){
accept.close();
}
if (inputStream!=null){
inputStream.close();
}
if (byteArrayOutputStream!=null){
byteArrayOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} }

运行结果:

Java网络编程:Socket 通信的更多相关文章

  1. java网络编程Socket通信详解

    Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...

  2. Java网络编程Socket通信

        TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议     UDP (User Datagram Proto ...

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

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

  4. java网络编程socket解析

    转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...

  5. Java网络编程——Socket

    网络是连接不同计算机的媒介,不同的计算机依靠网络来互相通信,即传递数据. Java中与网络编程相关的部分主要是Socket(套接字),它作为一种抽象的结构,实现了与通信相关的各类方法,构成一套完整的通 ...

  6. Java网络编程UDP通信原理

    前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信   TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...

  7. day05 Java网络编程socket 与多线程

    java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...

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

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

  9. UNIX网络编程——Socket通信原理和实践

    我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠so ...

  10. java网络编程——socket实现简单的CS会话

    还记得当年学计网课时用python实现一个简单的CS会话功能,这也是学习socket网络编程的第一步,现改用java重新实现,以此记录. 客户端 import java.io.*; import ja ...

随机推荐

  1. 【设计模式】Java设计模式 - 组合模式

    Java设计模式 - 组合模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起记录分享自己 ...

  2. 003-simonyanVeryDeepConvolutional2015(VGG)

    Very Deep Convolutional Networks for Large-Scale Image Recognition #paper 1. paper-info 1.1 Metadata ...

  3. 水晶报表导出pdf文件

    /// <summary> /// 导出pdf文件 /// </summary> /// <param name="mjsReport">报表文 ...

  4. 第五章:Admin管理后台 - 1:自定制Admin

    如果只是在admin中简单的展示及管理模型,那么在admin.py模块中使用admin.site.register将模型注册一下就好了: from django.contrib import admi ...

  5. Java线程同步的四种方式详解(建议收藏)

    ​ Java线程同步属于Java多线程与并发编程的核心点,需要重点掌握,下面我就来详解Java线程同步的4种主要的实现方式@mikechen 目录 什么是线程同步 线程同步的几种方式 1.使用sync ...

  6. flutter系列之:深入理解布局的基础constraints

    目录 简介 Tight和loose constraints 理解constraints的原则 总结 简介 我们在flutter中使用layout的时候需要经常对组件进行一些大小的限制,这种限制就叫做c ...

  7. Springboot 之 HandlerMethodReturnValueHandler 运用

    简介 现在项目中大部分采用前后端分离的架构,采用这种架构的项目,在返回数据时,几乎都是采用返回 json 格式的数据.而 spring 中返回 json 格式的数据一般采用 @RestControll ...

  8. PHP全栈开发(二):MYSQL学习

    昨天进行了CentOS 7 下面的 LAMP搭建 今天学习一下MySQL的一些入门级操作 主要参考PHP中文网的"MySQL最新手册教程" http://www.php.cn/my ...

  9. UVA12186 工人的请愿书 Another Crisis (树形DP)

    dp[i]表示要让i向上级发请愿书,最少需要多少个工人递交请愿书,因为要取前T%最小的,所以还要将i的子节点排序(这里用vector实现),取前c个最小的作为dp[i]的值. 这里用dfs可以省去dp ...

  10. 如何去了解Spring

    对于你想了解的技术 官方总是一个合适的选择 首先,我们所指的Spring 一般指的是Spring Framework,伴随着的时代的进步,Spring全家桶也逐渐完善起来 Spring 1.Why S ...