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. 《Win10——如何设置开机自启动项》

    Win10--如何设置开机自启动项       1. 为需要自启动的程序创建快捷方式. 2. Win+R输入"shell:startup",按下回车键出现一个文件夹. 3. 将快捷 ...

  2. Elasticsearch:定制分词器(analyzer)及相关性

    转载自:https://elasticstack.blog.csdn.net/article/details/114278163 在许多的情况下,我们使用现有的分词器已经足够满足我们许多的业务需求,但 ...

  3. python推导式特殊用法

    字典推导式 >>> dic = {x: x**2 for x in (2, 4, 6)} >>> dic {2: 4, 4: 16, 6: 36} >> ...

  4. Fluentd直接传输日志给Elasticsearch

    官方文档地址:https://docs.fluentd.org/output/elasticsearch td-agent的v3.0.1版本以后自带包含out_elasticsearch插件,不用再安 ...

  5. My life of Honker Security Commando

    红客突击队 && 红客突击分队 红客突击队,于2019年,由队长k龙联合国内多位顶尖高校研究生牵头成立.其团队从成立至今多次参加国际网络安全竞赛并取得良好成绩,积累了丰富的竞赛经验.团 ...

  6. 5N的多次方

    N=eval(input(" 请输入一个数:")) for i in range (5): print(pow(N,i))

  7. PHP全栈开发(四): HTML 学习(3. form 表单)

    form 表单标签 它表的是一个区域,而非是一个具体的某个元素,它也是作为一个容器的存在. 表单域主要是允许用户在表单域中输入内容,比如文本框,下拉列表,单选框,复选框,等等. <!DOCTYP ...

  8. VS Code For Web 深入浅出 -- 导读篇

    下一代 IDE 的形态究竟是什么呢?VS Code For Web 试图回答这个问题. 背景 众所周知,VS Code 是当前工业界最优秀的代码编辑器之一.它由<设计模式>的作者 Eric ...

  9. CSAPP实验attacklab

    attacklab 实验报告和答案文件都在 https://github.com/thkkk/attacklab

  10. VS使用正则表达式删除程序中的空行

    Ctrl+H; 需要替换的正则表达式 ^(?([^\r\n])\s)*\r?$\r?\n