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 服务端概述
为什么使用异步 异步线程是由线程池负责管理,而多线程,我们可以自己控制,当然在多线程中我们也可以使用线程池.就拿网络扒虫而言,如果使用异步模式去实现,它使用线程池进行管理.异步操作执行时,会将操作丢给 ...
随机推荐
- 新概念英语(1-115)Knock! Knock!
Lesson 115 Knock, knock! 敲敲门! Listen to the tape then answer this question. What does Jim have to dr ...
- angular2 学习笔记 ( animation 动画 )
refer : https://angular.io/guide/animations https://github.com/angular/angular/blob/master/packages/ ...
- gradle入门(1-5)创建并运行Web应用
一.使用Gretty运行Web应用 Gretty支持Jetty和Tomcat,它不会被Gradle缺少SLF4J绑定所导致的问题所困扰. 1.配置文件build.gradle buildscript ...
- maven入门(6)maven的生命周期
1. 三套生命周期 Maven拥有三套相互独立的生命周期,它们分别为clean,default和site. 每个生命周期包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,用户和 ...
- ejs注释问题
项目中遇到一个问题: 代码如下: 但是代码如下时,却不会出现bug: bug的导火索是ejs的注释: 因为我没有用对注释,所以被注释部分的if语句仍旧生效了. bug的根本原因是没有对mod类型进行判 ...
- 日推20单词 Day01
1.conflict n. 冲突 2.electronic adj. 电子的 3.mine n. 矿藏,地雷 4.mineral n. 矿物质 adj. 矿物的 5.undermine vt 破坏,渐 ...
- python Http协议
Http协议 一 HTTP概述 HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则. HTTP就是一个通信 ...
- API验证及AES加密
API验证 API验证: a. 发令牌: 静态 PS: 隐患 key被别人获取 b. 动态令牌 PS: (问题越严重)用户生成的每个令牌被黑客获取到,都会破解 c. 高级版本 PS: 黑客网速快,会窃 ...
- 关于if后面直接加上参数名,不加条件的用法
<template> <section> <p v-if="aa">{{aa}}</p> <p v-if="bb&q ...
- JSONObject和JSONArray区别及基本用法
一.JSONObject和JSONArray的数据表示形式 JSONObject的数据是用 { } 来表示的, 例如: { "id" : "123", & ...