Socket TCP客户端和服务器的实现
- import java.io.*;
- import java.net.Inet4Address;
- import java.net.InetSocketAddress;
- import java.net.Socket;
- public class Client {
- public static void main(String[] args) throws IOException {
- Socket socket = new Socket();
- // 超时时间
- socket.setSoTimeout(3000);
- // 连接本地,端口2000;超时时间3000ms
- socket.connect(new InetSocketAddress(Inet4Address.getLocalHost(), 2000), 3000);
- System.out.println("已发起服务器连接,并进入后续流程~");
- System.out.println("客户端信息:" + socket.getLocalAddress() + " P:" + socket.getLocalPort());
- System.out.println("服务器信息:" + socket.getInetAddress() + " P:" + socket.getPort());
- try {
- // 发送接收数据
- todo(socket);
- } catch (Exception e) {
- System.out.println("异常关闭");
- }
- // 释放资源
- socket.close();
- System.out.println("客户端已退出~");
- }
- private static void todo(Socket client) throws IOException {
- // 构建键盘输入流
- InputStream in = System.in;
- BufferedReader input = new BufferedReader(new InputStreamReader(in));
- // 得到Socket输出流,并转换为打印流
- OutputStream outputStream = client.getOutputStream();
- PrintStream socketPrintStream = new PrintStream(outputStream);
- // 得到Socket输入流,并转换为BufferedReader
- InputStream inputStream = client.getInputStream();
- BufferedReader socketBufferedReader = new BufferedReader(new InputStreamReader(inputStream));
- boolean flag = true;
- do {
- // 键盘读取一行
- String str = input.readLine();
- // 发送到服务器
- socketPrintStream.println(str);
- // 从服务器读取一行
- String echo = socketBufferedReader.readLine();
- if ("bye".equalsIgnoreCase(echo)) {
- flag = false;
- }else {
- System.out.println(echo);
- }
- }while (flag);
- // 资源释放
- socketPrintStream.close();
- socketBufferedReader.close();
- }
- }
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintStream;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class Server {
- public static void main(String[] args) throws IOException {
- ServerSocket server = new ServerSocket(2000);
- System.out.println("服务器准备就绪~");
- System.out.println("服务器信息:" + server.getInetAddress() + " P:" + server.getLocalPort());
- // 等待客户端连接
- for (; ; ) {
- // 得到客户端
- Socket client = server.accept();
- // 客户端构建异步线程
- ClientHandler clientHandler = new ClientHandler(client);
- // 启动线程
- clientHandler.start();
- }
- }
- /**
- * 客户端消息处理
- */
- private static class ClientHandler extends Thread {
- private Socket socket;
- private boolean flag = true;
- ClientHandler(Socket socket) {
- this.socket = socket;
- }
- @Override
- public void run() {
- super.run();
- System.out.println("新客户端连接:" + socket.getInetAddress() +
- " P:" + socket.getPort());
- try {
- // 得到打印流,用于数据输出;服务器回送数据使用
- PrintStream socketOutput = new PrintStream(socket.getOutputStream());
- // 得到输入流,用于接收数据
- BufferedReader socketInput = new BufferedReader(new InputStreamReader(
- socket.getInputStream()));
- do {
- // 客户端拿到一条数据
- String str = socketInput.readLine();
- if ("bye".equalsIgnoreCase(str)) {
- flag = false;
- // 回送
- socketOutput.println("bye");
- } else {
- // 打印到屏幕。并回送数据长度
- System.out.println(str);
- socketOutput.println("回送:" + str.length());
- }
- } while (flag);
- socketInput.close();
- socketOutput.close();
- } catch (Exception e) {
- System.out.println("连接异常断开");
- } finally {
- // 连接关闭
- try {
- socket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- System.out.println("客户端已退出:" + socket.getInetAddress() +
- " P:" + socket.getPort());
- }
- }
- }
Socket TCP客户端和服务器的实现的更多相关文章
- 通用异步 Windows Socket TCP 客户端组件的设计与实现
编写 Windows Socket TCP 客户端其实并不困难,Windows 提供了6种 I/O 通信模型供大家选择.但本座看过很多客户端程序都把 Socket 通信和业务逻辑混在一起,剪不断理还乱 ...
- cross socket tcp客户端开发
cross socket tcp客户端开发 uses Net.SocketAPI, Net.CrossSocket.Base, Net.CrossSocket FCrossTcp: ICrossSoc ...
- socket | tcp客户端 tcp服务器 udp客户端 udp 服务器 创建方法
tcp服务器 #coding=utf-8 ''' 这里是tcp服务器端,要先启动 ''' import socket import threading bind_ip = "0.0.0.0& ...
- [JAVA] Tcp客户端和服务器简单代码
服务器: import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; im ...
- Java实验四 TCP客户端和服务器的应用
实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全 4.对通信内容进行摘要计算并验证 实验步骤 1.信息安全传送: 发送方A——————>接收方B A加密时,用B ...
- Java 使用 Socket 实现客户端和服务器的信息交互
服务器 public class Server{ private ServerSocket serverSocket; private Socket socket; private BufferedR ...
- TCP客户端和服务器间传输数据遇到的TypeError: a bytes-like object is required, not 'str'问题
使用python实现python核心编程3第472页和474页的TCP时间戳服务器和客户端服务器间数据传输编程时遇到TypeError: a bytes-like object is required ...
- TCP客户端与服务器的实现
为了更容易理解,我们举一个小例子来说明服务器与客户端之间的连接过程. 有一个饭店,饭店里有服务员,服务员用于招待客人 特别要注意的是:要记住相关函数的各个参数都是什么,什么时候返回SOCKET_ERR ...
- tcp客户端从服务器下载文本文件
代码讲解: server import socket def send_file_client(new_client_socket, new_client_addr): # 接收客户端需要下载的文件名 ...
随机推荐
- 第二篇-ubuntu18.04下怎么制作GIF动画
一.在桌面打开终端 二.接着通过apt安装byzanz.sudo apt-get install byzanz 三.安装完成后在终端执行“xwininfo”.xwininfo 四.然后鼠标会变成“+” ...
- Echarts CPU监控 (折线仪表盘,图例混搭)
https://blog.csdn.net/mengxiangfeiyang/article/details/44802939 CPU page <script type="tex ...
- Linux/Unix系统QA
Q1:Ext3的三种日志记录方式 1 data=writeback 方式data=writeback方式下,ext3根本不执行任何形式的数据日志记录,提供给您的是和在XFS,JFS和 ReiserFS ...
- 一键开启MacOS HiDPI
完整文件下载:一键开启MacOS HiDPI 引言 作为一个黑苹果用户,追求黑果的体验是当然的,当各个硬件都驱动完善后,要做的就是细节的优化了,毕竟装上是拿来用的,可不能因为体验差苦了自己啊.机器毕竟 ...
- Linux如何查看机器的配置信息
Linux如何查看机器的配置信息 1.查看内存信息 cat /proc/meminfo [root@web ~]# cat /proc/meminfo MemTotal: kB MemFree: kB ...
- Golang的排序和查找
Golang的排序和查找 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.排序的基本介绍 排序是将一组数据,依指定的顺序进行排列的过程.排序的分类如下 1>.内部排序 指将 ...
- 【.NET】VS 本地调试 无法加载Json文件
1.如果要是发布到iis,还加载不出来,那就要配置一下MIME类型: 2.本地调试时,无法加载json文件: 解决方案: 在web.config中添加如下配置:mimeMap <system.w ...
- ASP.NET的checkboxlist,RadioButtonList,FileUpload,image控件的综合使用
一.拖控件 控件拖完如图所示:(有些是对不齐的,加一个表单就好了,把他们都放在表单里) 单纯的RadioButton是不能只选择一个的,除非你手动给他们加上代码: RadioButton1.Group ...
- PL/SQL Developer
下载 一.Oracle 客户端(两种) 1.免安装轻量版(以这个为例) https://www.oracle.com/technetwork/database/database-technologie ...
- elasticsearch 集成springboot
和jpa类似,很简单,很强大. pom <dependencies> <dependency> <groupId>org.springframework.boot& ...