1.问题:在学习Java的Socket编程,写了一些代码练习,但是又不知道是否规范,是否有优化的空间?

2.代码:

package com.nekolr.socket;

import com.google.common.util.concurrent.ThreadFactoryBuilder;

import java.io.*;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.concurrent.*;

/**

* @author nekolr

*/

public class TcpSocket {

static class TcpServer implements Runnable {

private int port = 8888;

@Override

public void run() {

try (

//创建服务端Socket,监听端口

ServerSocket serverSocket = new ServerSocket(port)

) {

//打开监听,等待客户端的连接(在连接到来之前一直阻塞)

Socket socket = serverSocket.accept();

try (

//获取输入流(获取客户端的消息)

InputStream is = socket.getInputStream();

InputStreamReader isr = new InputStreamReader(is, "utf-8");

BufferedReader reader = new BufferedReader(isr)

) {

String line;

while ((line = reader.readLine()) != null) {

System.out.println("客户端" + socket.getInetAddress().getHostAddress() + "发送消息:" + line);

}

} catch (IOException e) {

e.printStackTrace();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

static class TcpClient implements Runnable {

private String host = "localhost";

private int port = 8888;

@Override

public void run() {

try (

//创建客户端Socket,指定主机名和端口号

Socket socket = new Socket(host, port)

) {

try (

//获取输出流(向服务端发送消息)

OutputStream os = socket.getOutputStream();

OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8");

BufferedWriter writer = new BufferedWriter(osw)

) {

int i = 0;

while (true) {

i++;

writer.write("hello" + i);

writer.newLine();

}

} catch (IOException e) {

e.printStackTrace();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

public static void main(String[] args) {

TcpServer tcpServer = new TcpServer();

TcpClient tcpClient = new TcpClient();

ThreadFactory factory = new ThreadFactoryBuilder().setNameFormat("thread-pool").build();

ExecutorService executor = new ThreadPoolExecutor(2, 2,

0L, TimeUnit.MILLISECONDS,

new LinkedBlockingQueue<>(1024), factory, new ThreadPoolExecutor.AbortPolicy());

executor.execute(tcpServer);

executor.execute(tcpClient);

}

}

java socket优化_Java Socket编程代码优化相关推荐

  1. java socket通讯_Java socket通讯实现过程及问题解决

    这篇文章主要介绍了Java socket通讯实现过程及问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 本来是打算验证java socket是 ...

  2. java socket 超时_Java Socket超时浅析

    套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的"终端".针对一个特定的连接,每台机器上都有一个"套接字",可以想象它们之间有一条 ...

  3. java socket 卡住_Java socket通讯实现过程及问题解决

    这篇文章主要介绍了java socket通讯实现过程及问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 本来是打算验证java socket是 ...

  4. java socket 端口_Java Socket通信如何摆平自身端口问题

    Java Socket通信在使用的时候有不少的问题,在端口编程上来说是一个十分重要的.下面我们就看看Java Socket通信如何才能更好的使用相关的代码.希望大家有所帮助. 事实上网络编程简单的理解 ...

  5. java socket 工具_java+socket 简易聊天工具

    1.服务器端程序 package com.test3; import java.io.*; import java.net.*; import java.awt.*; import java.awt. ...

  6. java socket字符串_Java Socket Bug:从Socket的InputStream读取字符串

    我正在使用Socket与ServerSocket进行通信.字符串正从服务器发送到我的套接字.每条不同的行都是一条消息,在解析时包含信息.要阅读这些文本行,请使用扫描仪. 问题在于数据正在"爆 ...

  7. java socket 工具_java Socket简易聊天工具

    本文实例为大家分享了一款Socket简易聊天工具,希望大家喜欢. 代码运行如图,看起来还不错 服务端 package qiu; import java.awt.BorderLayout; import ...

  8. java socket 全双工_java socket实现全双工通信

    单工.半双工和全双工的定义 如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工. 如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输. 如果 ...

  9. java socket通信安全_Java Socket通信

    原理: 1.基于TCP协议,建立稳定连接的点对点的通信 a.实时,快速,安全性高,占用系统资源多,效率低 2.请求-响应模式 a.客户端 在网络通讯中,第一次主动发起通讯的程序被称作客户端(Clien ...

最新文章

  1. Pass Infrastructure基础架构(上)
  2. 汇编语言调用Linux系统调用
  3. 创建 VXLAN - 每天5分钟玩转 OpenStack(111)
  4. 重磅|阿里云发布“一站式敏捷数据仓库解决方案” 实现库仓一体数据分析能力(内含干货PPT下载)
  5. mysql也能注册到eureka_为什么我的服务提供者和消费者都注册不到eureka注册中心?...
  6. JSP 之输出九九乘法表
  7. Ubuntu搜狗输入法安装
  8. linux diff 补丁,Linux中diff、补丁的用法及介绍
  9. android电视文件管理器,2018电视文件管理器排行榜(最新)
  10. awr报告 解读_Oracle Awr报告_awr报告解读_基础简要信息
  11. 为什么uzi排到古手羽就秒_Uzi排到古手羽秒退引热议?“网友发表看法,弹幕疑似给出答案”...
  12. Andriod studio 学习 之 Recyclerview
  13. peopleSoft常见错误诊断
  14. 联想g40改Android,求大神帮忙,联想g40如何改win7系统?
  15. GO项目打包部署操作
  16. word每行字符数上限_word怎么限制每行字数
  17. 分析智联招聘的API接口,进行数据爬取
  18. check_password使用方法
  19. mysql server怎么安装教程_Mysql Server安装教程
  20. 车易加加油抵扣卡:美布两油收涨2%,上调线将被攻破

热门文章

  1. weblogic工具_WebLogic Classloader分析工具
  2. MicroProfile在Jakarta EE时代的作用
  3. glassfish发布应用_GlassFish 4升级的构建,Gradle和嵌入式应用服务器
  4. apache hadoop_春天遇见Apache Hadoop
  5. java与java ee_Java EE 7社区调查结果!
  6. jasperreports_JasperReports JSF插件用例系列
  7. javaserver_集成Spring和JavaServer Faces:改进的模板
  8. java不想出差_您不想错过的十大Java书籍
  9. 在NetBeans,Eclipse,IntelliJ,OpenShift和Maven上使用WildFly 9
  10. 在WildFly 8.2中修补焊接3 – Java EE 8的第一个实验RI