java socket server
用java编写的一个socket服务端,通过一个tcp测试工具测试这个服务端,发现发送数据给服务端,服务端接收不到,当tcp测试工具断开连接后,测试工具发送的字符串才被服务端接收到,这是为什么?
java socket服务端代码
java服务端状态输出如下
server start
client number 1
a client connect /127.0.0.1:50437
affff
tcp测试工具截图
补充说明:
tcp测试工具能够正常连接到服务端,但是文本数据发送,服务端不会实时显示,只有当测试工具断开连接时,这时,服务端才显示刚才测试工具发送的文本数据
java socket服务端代码
package com.myserver.server; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class MultiThreadServer { private int port = 6666; private ServerSocket serverSocket; private ExecutorService executorService;//线程池 private final int POOL_SIZE = 10;//单个CPU线程池大小 public MultiThreadServer() throws IOException { serverSocket = new ServerSocket(port); //Runtime的availableProcessor()方法返回当前系统的CPU数目. executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * POOL_SIZE); System.out.println("server start"); } public void service() { while (true) { Socket socket = null; try { //接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接 socket = serverSocket.accept(); executorService.execute(new Handler(socket)); Count.add(); System.out.println("client number " + Count.num); } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) throws IOException { new MultiThreadServer().service(); } } class Handler implements Runnable { private Socket socket; public Handler(Socket socket) { this.socket = socket; } public void run() { try { System.out.println("a client connect " + socket.getInetAddress() + ":" + socket.getPort()); PrintWriter writer = new PrintWriter(socket.getOutputStream()); writer.println("connect success"); writer.flush(); BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); String readLine = reader.readLine(); while (true) { if (readLine != null) { System.out.println(readLine); readLine = reader.readLine(); } else { break; } } writer.close(); reader.close(); } catch (IOException e) { System.out.println("a client leave"); Count.sub(); System.out.println("client number " + Count.num); } finally { try { if (socket != null) { socket.close(); } } catch (IOException e) { e.printStackTrace(); } } } } class Count { public static int num = 0; public static void add() { num += 1; } public static void sub() { num -= 1; } }
java服务端状态输出如下
server start
client number 1
a client connect /127.0.0.1:50437
affff
tcp测试工具截图

补充说明:
tcp测试工具能够正常连接到服务端,但是文本数据发送,服务端不会实时显示,只有当测试工具断开连接时,这时,服务端才显示刚才测试工具发送的文本数据
2019-03-25 13:38
相关教程
更多Java socket通信
是从网上找到的聊天程序 有服务器和客户端, 在注册完之后出现 java.io.StreamCorruptedException: invalid stream header: 2A2A2A2A Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Register.register(
java server怎样和c++ client实现SSL通信??
java keytool生成的证书是CRT等格式的,这种格式是2进制编码的,而C++用的证书格式是pem,pem是ascii编码的。 我用keytool无法生成pem,并且又无法把C CLIENT给我的pem放进我的truststore中。 weblogic还只能用JKS来实现SSL 求高端玩家帮忙呀。。。 问题补充: beneo 写道 socket跟语言无关
引入thread后socket接受不了报文了
不使用线程thread可以正常接受报文,加了后就在recvfrom那里不动了,是怎么回事? using namespace std; #include <thread> #include <iostream> #include <stdio.h> #include <stdlib.h> #include <errno.h>
Another MySQL daemon already running with the same unix socket.
两个方法解决: 第一个是立即关机 使用命令 shutdown -h now 关机,关机后在启动,进程就停止了。 第二个直接把mysql.sock文件改名即可。也可以删除,推荐改名。 然后就可以启动mysql了。 下面是国外原文 To prevent the problem from occurring, you must perform a graceful shutdown of the ser
Hadoop的thrift server配置
说明:Hadoop版本:hadoop-1.2.1.tar.gz。linux系统12.04,不过这里跟系统无关,可能安装软件的命令有差别。 相关阅读: 在Ubuntu 12.10 上安装部署Openstack http://www.linuxidc.com/Linux/2013-08/88184.htm Ubuntu 12.04 OpenStack Swift单节点部署手册 http://www.
socket访问页面时返回了301重定向的代码,我该怎么解决?
我在网上查了查,好像应该在次请求一下返回的location,但我不知道该怎么改代码.麻烦高手帮我看看.没多少分了 下面是我的代码,我请求的是一个测姻缘的网站.. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.Out
3年swing,1年JavaEE,1年java socket转android什么待遇
3年swing,技能除了跟做游戏的比足够了。做过IM 3款,手术X光机客户端1款,线程是我的强项,过度Android有绝对的自信。 1年JavaEE,spring struts都摸过,腻外了 1年java服务器开发,做过的项目包括网关、邮件服务器、金融信息发布、用过纯socket,MIMA框架,设计过协议,也熟悉一些协议比如sip、xmpp、activesync、webdav等等,http更不
HDFS1.0源代码解析—Hadoop的RPC机制之Server端解析
上一篇文章结合DN的应用简单的介绍了一下Hadoop RPC中client端的基本执行流程,算是给大家阅读源代码的一点提示吧。本文将对RPC的Server端的机制做一下简单的分析,但愿对大家的理解有所帮助,也算是对自己工作的一点总结。 按照惯例先来看一下Server类主要的组成部分Listener、Handler、Responser,通过名字很容易看出Server功能由三部分构成,负责获取用户请求
OpenCms 集成外部Solr Server
OpenCms默认是以内嵌的Solr作为全文搜索服务的,不过我们也可以配置一个独立的Solr搜索服务器 设置外部Solr Server 1. 从Solr 官方站点http://lucene.apache.org/solr/downloads.html下载solr最新版,目前是4.2.1版本,解开压缩包solr-4.2.1.zip, 解压缩文件至solr-4.2.1目录中 2. 创建一目录取名为S
solrcore.properties定义server是否是master
If the configuration directory for a Solr core contains a file namedsolrcore.propertiesthat file can contain any arbitrary user defined property names and values using the Java standardproperties file
Hadoop源码分析之一(RPC机制之Server)
网上已经有很多关于Hadoop源码分析的好文,在这记录的目的是把自己在看Hadoop源码时自己的一些体会,方便日后查询巩固。 相关阅读:Hadoop源码分析之二(RPC机制之Call处理) http://www.linuxidc.com/Linux/2013-01/77252.htm 想了解Hadoop是如何工作的,首先需要了解Hadoop RPC原理。Hadoop提供了一个统一的RPC机制来处理
命令行运行Hbase: Session 0x0 for server null, unexpected error
又重新看了下hbase的操作,以前虽说是运行过对Hbase的操作,比如直接的建表,导入数据,或者是使用MR操作Hbase,但是都是在单节点上做的,而且是用eclipse下操作的,不用担心一些包的问题。今天打算把代码拷贝到Hadoop的lib下面,然后在命令行中运行,遇到的一个问题如下: 12/09/2912:29:36INFOzookeeper.ZooKeeper:Initiatingcl
Solr Server对外提供Web Service的沟通方式 使用SolrJ跟Solr Server通信
使用SolrJ跟Solr Server通信 郝国梁 (2009年8月 3日 23:09) | 暂无评论 | 暂无引用通告 我们都知道Solr Server对外提供Web Service的沟通方式,接受Xml格式的Post数据。这种方式本身没有问题,可当我们要把Solr跟我们的业务逻辑整合时,我们希望更加友好的接口和工具。SolrJ等Solr Client应运
rsync 文件校验及同步原理及rsync server配置
参考:http://rsync.samba.org/how-rsync-works.html 我们关注的是其发送与接收校验文件的算法,这里附上原文和我老婆(^_^)的翻译: The Sender The sender process reads the file index numbers and associated block checksum sets one at a time from
Hadoop海量put时出现的socket超时导致put失败解决方案
当一个HDFS系统同时处理许多个并行的put操作,往HDFS上传数据 时,有时候会出现dfsclient 端发生socket 链接超时的报错,有的时候甚至会由于这种原因导致最终的put操作失败,造成数据上传不完整。 log类似如下: All datanodes *** are bad. Aborting... 类似这样的错误,常常会在并行的put操作比较多,比如 60-80个,每个put的数据量约
最新教程
更多java线程状态详解(6种)
java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞
redis从库只读设置-redis集群管理
默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave. 127.0.0.1:6382> set k3 111 (error) READONLY You can't write against a read only slave. 如果你要开启从库
Netty环境配置
netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。
Netty基于流的传输处理
在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据
Netty入门实例-使用POJO代替ByteBuf
使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。
Netty入门实例-时间服务器
Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现
Netty入门实例-编写服务器端程序
channelRead()处理程序方法实现如下
Netty开发环境配置
最新版本的Netty 4.x和JDK 1.6及更高版本
电商平台数据库设计
电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表
HttpClient 上传文件
我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。
MongoDB常用命令
查看当前使用的数据库 > db test 切换数据库 > use foobar switched to db foobar 插入文档 > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new
快速了解MongoDB【基本概念与体系结构】
什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
windows系统安装MongoDB
安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我
Spring boot整合MyBatis-Plus 之二:增删改查
基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baom
分布式ID生成器【snowflake雪花算法】
基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案