Socket通信是基于TCP协议进行的传输层通信,是在应用和应用之间的通信,一般应用在即时通讯上。

建立连接

用Socket创建连接需要在客户端和服务端都使用socket套接字。

Linux内存创建Socket,只是创建的socket使用有些差异。

public class EchoServer{
private int port;
Socket socket;
public EchoServer(int port){
this.port = port;
} private void run() throws IOException{
ServerSocket serverSocket = new ServerSocket(port);
while(true){
socket = serverSocket.accept();
new Thread(()->{
write(socket);
}).start();
}
} private void write(Socket socket){
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
int n ;
byte[] b = new byte[1024];
while((n=in.read(b))>0){
out.write(b,0,b.length);
}
}
public void static main(String[] args){
EchoServer server = new EchoServer(7890);
server.run();
}
}
public class EchoClient{
private Socket socket;
private static String host;
private static int port; public EchoClient(String host,int port){
this.host = host;
this.port = port;
} public void run() throws IOException{
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
new Thread(()->{
      int n ;
byte[] b = new byte[1024];
while((n=in.read(b))>0){
System.out.write(b,0,b.length);
}
}).start();
int n ;
byte[] b = new byte[1024];
while((n=System.out.read(b))>0){
out.write(b,0,n);
}
}
public void static main(String[] args){
EchoClient client = new EchoClient("localhost",7890);
client.run(); }
}

  

一种Socket的用处是监听,叫做ServerSocket,这种Socket会调用listen的方法,监听连接上的套接字。

另一种socket的用处是连接,它调用connect方法,作用为服务端和客户端的通讯连接套字。

一个完整的TCP通信,在服务端和客户端总计创建三个socket。

一个监控的socket在服务端监控连接成功的客户端套接字,并在接收连接后产生一个连接的socket.

一个连接的socket在客户端请求发起连接。

基于TCP实现的Socket通讯详解的更多相关文章

  1. TCP/IP协议、HTTP协议、SOCKET通讯详解

    1.TCP连接TCP(Transmission Control Protocol) 传输控制协议.TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握确认建立一个连接.位码即tcp标志位 ...

  2. 闲来无事,写个基于TCP协议的Socket通讯Demo

    .Net Socket通讯可以使用Socket类,也可以使用 TcpClient. TcpListener 和 UdpClient类.我这里使用的是Socket类,Tcp协议. 程序很简单,一个命令行 ...

  3. IOS 基于TCP的socket通信详解(原创)

    最近在整理通信层相关知识,这篇文章是边整理边写的,有些地方可能不够准确,还请各位路过的大牛专家指出来.这次整理的socket通信是基于TCP的,实现方式是GCD形式,以下记录的都是些理论知识,方便自己 ...

  4. Socket 死连接详解

    Socket 死连接详解 当使用 Socket 进行通信时,由于各种不同的因素,都有可能导致死连接停留在服务器端,假如服务端需要处理的连接较多,就有可能造成服务器资源严重浪费,对此,本文将阐述其原理以 ...

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

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

  6. socket原理详解

    1.什么是socket 我们知道进程通信的方法有管道.命名管道.信号.消息队列.共享内存.信号量,这些方法都要求通信的两个进程位于同一个主机.但是如果通信双方不在同一个主机又该如何进行通信呢?在计算机 ...

  7. Android Socket通信详解

    一.Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客 ...

  8. socket接口详解

    1. socket概述 socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在Unix一切 ...

  9. c/c++ socket函数详解

    c/c++ socket函数详解 注意: 使用socketAPI前,要先将相关链接库(Ws2_32.lib)加入链接,并使用WSAStartUp函数初始化.每个socket函数都可能失败(返回-1), ...

随机推荐

  1. 剑指:链表中倒数第k个节点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 解法 pre 指针走 k-1 步.之后 cur 指针指向 phead,然后两个指针同时走,直至 pre 指针到达尾结点. 即cur与pre始终相距 ...

  2. Git的下载安装

    下载地址:https://git-scm.com/download/win 命令: git add ...  ---将资源放到缓存区域 git commit  -m "提交说明"  ...

  3. pandas 之 groupby 聚合函数

    import numpy as np import pandas as pd 聚合函数 Aggregations refer to any data transformation that produ ...

  4. centos7安装docker-compose报错解决办法

      docker-compose是 docker 容器的一种单机编排服务,docker-compose 是一个管理多个容器的工具,比如可以解决容器之间的依赖关系,当在宿主机启动较多的容器时候,如果都是 ...

  5. 随笔记录--RegExp类型

    阅读Javascript高级程序设计第五章 -- RegExp类型总结 对于基础教程部分, 有小伙伴不熟悉的,可以参考 正则表达式 - 教程 1. 基础部分回顾: ECMASript通过RegExp类 ...

  6. Mac下搭建Appnium+Python+Ios模拟器环境

    转载:https://www.jianshu.com/p/f7cf077d9444 https://blog.csdn.net/a158123/article/details/79684499 htt ...

  7. 清理Linux 磁盘空间

    1.执行   lsof | grep deleted发现有大量刚刚删除文件的进程存在,kill掉进程(或者重启进程)   OK 2.查看磁盘信息:df -lh 3.循环定位最大文件目录:du -h - ...

  8. Comet OJ 夏季欢乐赛 分配学号

    Comet OJ 夏季欢乐赛 H 分配学号 题目传送门 题目描述 今天,是JWJU给同学们分配学号的一天!为了让大家尽可能的得到自己想要的学号,鸡尾酒让大家先从 [1,10^{18}][1,1018] ...

  9. mysql数据库锁的机制-及事务事件

    事务隔离级别,脏读.不可重复读.幻读,乐观锁.悲观锁(共享锁.排它锁) 数据库事务具有四个特征,分别是原子性(Atomicity).一致性(Consistency).隔离性(Isoation).持久性 ...

  10. (HK1-0)激活与配置摄像机

    HK使用手册 网络连接 激活与配置摄像机 网络摄像机可通过 SADP 软件.客户端软件和浏览器三种方式激活, 具体激活操作方式可参见<网络摄像机操作手册>. 1. 安装随机光盘或从官网下载 ...