import java.io.IOException;
import java.net.*; public class TCP_Server {
public static void main(String[] args) {
new ConnectionThread().start();
}
} class ConnectionThread extends Thread {
@Override
public void run() {
try {
ServerSocket ss = new ServerSocket(8989); while(true){
Socket s = ss.accept();
System.out.println("接收到一个用户的连接" + s.getInetAddress());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

目前,这个服务器端没有处理客户端发送的数据的功能,我们需要利用多线程接收处理客户端的数据。

构建一个线程类,构造方法中把Socket对象传递过来。

import java.io.IOException;
import java.io.InputStream;
import java.net.*; public class TCP_Server {
public static void main(String[] args) {
new ConnectionThread().start();
}
} class ConnectionThread extends Thread {
@Override
public void run() {
try {
ServerSocket ss = new ServerSocket(8989); while(true){
Socket s = ss.accept();
System.out.println("接收到一个用户的连接" + s.getInetAddress());
new ServerThread(s).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} class ServerThread extends Thread {
public ServerThread(Socket s){
this.s=s;
}
private Socket s =null;
@Override
public void run() { try {
InputStream ips = s.getInputStream();
byte[] buf = new byte[1024];
int length = -1;
System.out.println("-------------------------------");
System.out.println("来自"+s.getInetAddress()+"客户端的连接");
while((length = ips.read(buf))>-1)
System.out.println(new String(buf,0,length));
} catch (Exception e) {
e.printStackTrace();
} }
}

【Java】学习路径60-利用TCP协议接收多个客户端的数据的更多相关文章

  1. Java学习笔记之基于TCP协议的socket

    可以一直输入,而不是一问一答: 开两个线程,一个负责收,一个负责发. 1.先运行: package com.zr.javase0825; import java.io.BufferedReader; ...

  2. Java学习路径及练手项目合集

    Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 实验楼上的[Java 学习路径]中将首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE ...

  3. Ubuntu利用TCP协议来获取server时间

    Linux利用TCP协议来获取server时间 这里使用Unix网络编程里面的一个小程序,该client建立一个到server的TCP连接,然后读取由server以直观可读格式简单地送回的当前时间和日 ...

  4. Java学习路径(抛光砖)

    这就是我刚刚在五孔问答中找到的Java学习路线图抛光砖价格.我个人认为,这条Java学习路线是可以的.它是2018年相对较新的Java学习路线,更符合企业就业标准. Java学习路径的第一阶段:Jav ...

  5. 客户端验证、tcp协议中多个客户端的同时在线

    一.客户端验证 当在一个局域网内需要验证是否为合法的客户端连接时,我们需要写代码进行验证. Server端 import os import hmac import socket def auth(c ...

  6. java基础知识回顾之java Socket学习(二)--TCP协议编程

    TCP传输(传输控制协议):TCP协议是一种面向连接的,可靠的字节流服务.当客户端和服务器端彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能进行数据的传输.它将一台主机发出的字节流无差错的 ...

  7. Java学习路径:不走弯路,这是一条捷径

    1.如何学习编程? JAVA是一种平台.也是一种程序设计语言,怎样学好程序设计不只适用于JAVA,对C++等其它程序设计语言也一样管用.有编程高手觉得,JAVA也好C也好没什么分别,拿来就用.为什么他 ...

  8. 利用TCP协议,实现基于Socket的小聊天程序(初级版)

    TCP TCP (Transmission Control Protocol)属于传输层协议.其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送.可靠性.有效流控.全双工操作和多路复用 ...

  9. 终端参数上报后,平台通过tcp协议接收到相应数据并处理。

    终端将终端参数以json格式的数据发送至平台.终端上电后上报,可以不认证直接上报. 实现流程如下. 1.设置终端参数上报的协议类型,例如:0x0000. public static final int ...

随机推荐

  1. ForEach遍历集合、 集合容器

    ForEach遍历集合 foreach循环是一种更加简洁的for循环,也称增强for循环,能用于遍历数组或集合中的元素. 格式: for(容器元素类型 临时变量:容器变量){ 执行语句} 从上面格式可 ...

  2. 一个ES设置操作引发的“血案”

    背景说明 ES版本 7.1.4 在ES生产环境中增加字段,一直提示Setting index.mapper.dynamic was removed after version 6.0.0错误.但是我只 ...

  3. 使用PowerShell安装MySQL

    更新记录 2022年4月16日:本文迁移自Panda666原博客,原发布时间:2021年7月10日. 2022年4月16日:更新MySQL下载链接. 一.说明与准备工作 根据MySQL官网提供的安装M ...

  4. 2.如何正确理解古典概率中的条件概率《zobol的考研概率论教程》

    写本文主要是帮助粉丝理解考研中的古典概率-条件概率的具体定义. "B事件发生的条件下,A事件发生的概率"? "在A集合内有多少B的样本点"? "在B约 ...

  5. 《Java笔记——基础语法》

    Java笔记--基础语法       一.字符串的拼接: 例如: System.out.println(""+"");     二.换行语句: 例如: Syst ...

  6. dubbox、zookeeper BUG记录

    主要错误信息: dubbo:com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method... Caused by: com.alib ...

  7. C#中将字符串转换成数值

    Convert.ToInt32("999");

  8. Microsoft Office Visio Professional 之用例图

    1 用例 用例:表示参与者与系统的一次交互过程. 用例用椭圆来表示: 2 用例的特点 用例用于描述系统的功能,这个功能是外部使用者看到的系统功能,不反映功能的实现方式. 用例描述用户提出的一些可见需求 ...

  9. 解决方案:可以ping别人,但是别人不能ping我

    背景:我在写分布式爬虫项目时遇到了slave端无法ping通我的master,我的master可以ping通slave.我将master的防火墙关闭后slave可以ping了,但是这不是解决办法.于是 ...

  10. Tomcat7下使用Log4j接管catalina.out日志文件

    Tomcat7下使用Log4j接管catalina.out日志文件    摘要 Tomcat7下使用Log4j接管catalina.out日志文件生成方式,按天存放,解决catalina.out日志文 ...