TCP 通信
一、TCP与UDP的区别

二、ServerSocket与Socket

1 ServerSocket

以上介绍的几个构造方法中,第二个构造方法最常用。


2.Socket



import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws Exception {
new TCPServer().listen(); // 创建TCPServer对象,并调用listen()方法
}
}
// TCP服务端
class TCPServer {
private static final int PORT = 7789; // 定义一个端口号
public void listen() throws Exception { // 定义一个listen()方法,抛出一个异常
ServerSocket serverSocket = new ServerSocket(PORT); // 创建ServerSocket对象,服务器启动,监听7789端口
Socket client = serverSocket.accept();//等待客户端连接7788端口,一旦有client端连接便创建socket实例,然后通过socket交互数据
System.out.println("开始与客户端交互数据");
InputStream is = client.getInputStream();//用于接收客户端发来的请求
byte[] buf = new byte[1024];
int len = is.read(buf);//从输入流读取若干字节,把它们保存到字节数组buf中,返回字节数
String messageGet = new String(buf,0,len);
System.out.println("服务端从客户端获取到的信息:"+messageGet);
OutputStream os = client.getOutputStream();// 用于发送信息
os.write(("我是服务端,我已经收到客户端你的消息!").getBytes()); // 当客户端连接到服务端时,向客户端输出数据
Thread.sleep(5000); // 模拟执行其它功能占用的时间
System.out.println("结束与客户端交互数据");
os.close();
client.close();
}
}
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws Exception {
new TCPClient().connect(); // 创建TCPClient对象,并调用connect()方法
}
}
//TCP客户端
class TCPClient {
private static final int PORT = 7789; // 服务端的端口号
public void connect() throws Exception {
//创建一个Socket并连接到给出地址和端口号的计算机
Socket client = new Socket(InetAddress.getLocalHost(), PORT);
OutputStream os = client.getOutputStream();
String message = "我是客户端,收到请回答!";
os.write(message.getBytes());
InputStream is = client.getInputStream(); // 得到接收数据的流
byte[] buf = new byte[1024]; // 定义1024个字节数组的缓冲区
int len = is.read(buf); // 将数据读到缓冲区中
System.out.println(new String(buf, 0, len)); // 将缓冲区中的数据输出
client.close(); // 关闭Socket对象,释放资源
}
}
TCP 通信的更多相关文章
- TCP通信
//网络套接字编程实例,服务器端,TCP通信. #include <WinSock2.h> #pragma comment(lib,"ws2_32.lib") #inc ...
- 清晰易懂TCP通信原理解析(附demo、简易TCP通信库源码、解决沾包问题等)C#版
目录 说明 TCP与UDP通信的特点 TCP中的沾包现象 自定义应用层协议 TCPLibrary通信库介绍 Demo演示 未完成功能 源码下载 说明 我前面博客中有多篇文章讲到了.NET中的网络编程, ...
- JAVASE02-Unit010: 多线程基础 、 TCP通信
多线程基础 . TCP通信 * 当一个方法被synchronized修饰后,那么 * 该方法称为同步方法,即:多个线程不能同时 * 进入到方法内部执行. package day10; /** * 当多 ...
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- NetworkComms V3 使用TCP通信传递IList<T>类型的数据
客户端从服务器获取一组IList<T>类型的数据非常常见(通常从数据库中获取) 我们用NeworkComms V3来演示一下(NetworkcommsV2.x版本也同样支持) [ 使用pr ...
- [C语言]一个很实用的服务端和客户端进行TCP通信的实例
本文给出一个很实用的服务端和客户端进行TCP通信的小例子.具体实现上非常简单,只是平时编写类似程序,具体步骤经常忘记,还要总是查,暂且将其记下来,方便以后参考. (1)客户端程序,编写一个文件clie ...
- ACE_linux:TCP通信
1.涉及类 ACE_INET_Addr//ACE网络地址ACE_SOCK_Acceptor//ACE网络服务器ACE_SOCK_Connector//ACE网络客户端ACE_SOCK_Stream// ...
- 异步tcp通信——APM.Server 消息推送服务的实现
消息推送服务 服务器推送目前流行就是私信.发布/订阅等模式,基本上都是基于会话映射,消息对列等技术实现的:高性能.分布式可以如下解决:会话映射可采用redis cluster等技术实现,消息对列可使用 ...
- 异步tcp通信——APM.ConsoleDemo
APM测试 俗话说麻雀虽小,五脏俱全.apm虽然简单,但是可以实现单机高性能消息推送(可以采用redis.kafka等改造成大型分布式消息推送服务器). 测试demo: using System; u ...
- 异步tcp通信——APM.Core 服务端概述
为什么使用异步 异步线程是由线程池负责管理,而多线程,我们可以自己控制,当然在多线程中我们也可以使用线程池.就拿网络扒虫而言,如果使用异步模式去实现,它使用线程池进行管理.异步操作执行时,会将操作丢给 ...
随机推荐
- Linq 透明标识符
IEnumerable<Person> list = new List<Person> { , Id = }, , Id = }, , Id = }, , Id = }, , ...
- CRC 校验
匠心零度 转载请注明原创出处,谢谢! 说明 上篇RocketMQ(二):RPC通讯介绍了rocketmq的一些rpc细节,其实这些内容不仅仅是rocketmq内容,任何通信模块基本都是类似的,这块内容 ...
- Spring Security入门(3-6)Spring Security 的鉴权 - 自定义权限前缀
- ssh整合之六管理我们的配置文件
1.我们的ssh搭建已经搭建好了,之前是纯xml方式,而且我们的配置文件,是一个框架一个配置文件.这样的话,配置文件中的内容就会很多,这样以后修改起来也会很麻烦,因 此,我们尝试着把这些 ...
- mangodb的基本操作:增删改差
MongoDB三元素: 1 数据库: 和关系型数据库中数据库的层次相同,内部可以有多个集合. 2 集合: 相当于关系型数据库中的表,存储若干文档,结构不固定 3 文档: 相当于关系型数据库中的行,是J ...
- 在Android项目中使用Java8
前言 在过去的文章中我介绍过Java8的一些新特性,包括: Java8新特性第1章(Lambda表达式) Java8新特性第2章(接口默认方法) Java8新特性第3章(Stream API) 之前由 ...
- Spring Boot面试题
Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一 Spring Boot.Spring MVC 和 Spring 有什么区别 ...
- 分享java常用技术教程:dubbo、zookeeper、ActiveMq、多线程、Redis、PowerDesigner等
游戏是自己整理的邮箱来源于网上,下面是我的有道云的分享地址: https://note.youdao.com/share/?id=c5f258fa9efd1b28b2d8f0d37e59b194&am ...
- 一日一练-CSS-CSS 居中
特别声明:此篇文章内容来源于@CHRIS COYIER 的Centering in CSS:A Complete Guide 子曰:CSS 居中是一个非常常见的问题,无论是在项目中,还是在各种面试资料 ...
- canvas实现的粒子效果
前言:我的这个share很简单,没什么技术水准,主要是我自己觉得canvas这个标签很cool!,简单实用又能装X,而且又能实现很多看起来很炫的东西. 一 关于canvas <canvas> ...