0-0、精彩,null强制转换,仍为null

Socket s = new Socket((SocketImpl) null);

0、一个进程占据一个端口,同一台计算机下

a、Socket Server端占用一个端口 (Server端绑定一个)

b、Socket Client端也占用一个端口(随机找一个操作系统限制的端口)

1、Server端代码

import java.io.IOException;

import java.io.InputStream;

import java.net.ServerSocket;

import java.net.Socket;

public class IOServer {

public static void main(String[] args) throws Exception {

ServerSocket serverSocket = new ServerSocket(8000); //先创建一个ServerSocket对象

// (1) 接收新连接线程

new Thread(() -> {

while (true) {

try {

// (1) 阻塞方法获取新的连接,这个牛逼,多线程知识真是太重要了

Socket socket = serverSocket.accept(); //线程处于的状态感觉是WAITING状态,不应该是BLOCKED状态吧

System.out.println("开始接客了");

// (2) 每一个新的Socket连接都会创建一个线程,负责读取数据,卧槽连接多了,得让操作系统创建多少个线程……

new Thread(() -> {

try {

byte[] data = new byte[1024]; //1Kb、1kb的读

InputStream inputStream = socket.getInputStream(); //获取到客户端的Socket对象,然后获取输入字节流

while (true) {

int len;

// (3) 按字节流方式读取数据

while ((len = inputStream.read(data)) != -1) {

System.out.println(new String(data, 0, len));

}

}

} catch (IOException e) {

}

}).start();

} catch (IOException e) {

}

}

}).start();

}

}

2、Client端代码

import java.io.IOException;

import java.net.Socket;

import java.util.Date;

public class IOClient {

public static void main(String[] args) {

new Thread(() -> {

try {

Socket socket = new Socket("127.0.0.1", 8000); //传入目标ip与目标端口

while (true) {

try {

socket.getOutputStream().write((new Date() + ": hello world").getBytes());

socket.getOutputStream().flush();

System.out.println("localPort:" + socket.getLocalPort()); //Socket Client使用的端口,每次会随机占用一个

System.out.println("target port:" + socket.getPort()); //Socket Server使用的端口

Thread.sleep(2000);

} catch (Exception e) {

}

}

} catch (IOException e) {

}

}).start();

}

}

标签:Java,socket,java,端口,版本,import,new,Socket

来源: https://blog.csdn.net/cadi2011/article/details/100996666

socket的java实现_Socket之Java实现普通版本相关推荐

  1. java socket 浏览器_Socket实现Java和浏览器交互。

    昨天写了段小程序,现贴出来看看. 以下是socket的简单介绍.获取两台联通的机器之间的IP和端口号等信息. import java.io.IOException; import java.net.S ...

  2. socket connect java_网络编程 – 为什么Java的socket.connect()消耗100%的cpu资源?

    我创建了一个线程池并为它提供了50个连接到服务器的任务.所以一旦完成连接,发送一些数据,然后断开连接.它的读取超时设置为5秒(当然是5000长).我甚至将线程池设置为最大大小为1.然后在 linux上 ...

  3. java socket 包头包体_使用JAVA上抓取Socket服务端和客户端通信TCP数据包

    使用Java抓取Socket通信TCP数据包 使用WireShark默认使用的是winpcap去抓本地环回的数据包,需要安装npcap再在Wireshark选择本地环回的网卡抓包 在Java-Sock ...

  4. java聊天室源工程文件_socket实现java聊天室,公告等功能,前后端分离(附源码)...

    pom文件 org.springframework.boot spring-boot-starter-websocket application.yml中端口设置 server: port: 1111 ...

  5. 基于Socket编程的聊天工具【Java实现】

    思路: 要实现聊天功能,我们就必须有服务器和客户端.客户端连接到服务器,然后通过发送消息到服务器及从服务器读取消息来达到多客户端通信的目的.简单来说,所有客户端都是通过服务器来进行身份验证和消息发送的 ...

  6. java socket 获取网页源代码_通过java.net.Socket 类抓取网页内容

    /** 文件名 : Firstsocket.java 描述 :通过 java.net.Socket 类访问一个web页面,并且返回结果 作者: 慈勤强 cqq1978@yeah.net 参考:http ...

  7. java起socket监听,java socket 监听示例,javasocket,java socket监

    java socket 监听示例,javasocket,java socket监 java socket监听示例: socket监听需要使用SocketServer类,如下代码:package cn. ...

  8. java web ubuntu_Ubuntu部署Java web项目

    登录服务器和给服务器传输文件,使用的工具是Xshell Xftp Mysql 安装mysql 输入:sudo apt-get update                     更新软件列表 输入: ...

  9. Java:计算机编程语言Java的简介、编程环境/工具、如何学习Java之详细攻略

    Java:计算机编程语言Java的简介.编程环境/工具.如何学习Java之详细攻略 目录 Java的简介 1.Java的工作原理--基于Eclipse等编程Java语言→定义Java类→Java虚拟机 ...

  10. java连接mongod抛java.net.SocketTimeoutException: connect timed out异常(2015-11-07 20:29:58)

    为什么80%的码农都做不了架构师?>>>    背景:本机的eclipse项目访问操作安装在本机虚拟机ContOS6.5系统上的MongoDB 最近在用java连接mongod的时候 ...

最新文章

  1. 关于Android Service真正的完全详解,你需要知道的一切
  2. int转base64编码
  3. python求和_Python程序查找特殊求和系列的解决方案
  4. Linux思维导图之sed、实战习题
  5. SSH、SSL与HTTPS
  6. paddleocr常见问题(3)
  7. 不让EditText打开就获取焦点
  8. .md文件的打开与软件---markdown
  9. 服务器压力测试实现步骤,测试web性能时 做一个压力测试的四大步骤
  10. 游程编码用matlab实现代码_二值图像游程编码算法的Matlab实现 -
  11. Unity 实现部分模型流光效果
  12. 外键设置中的CASCADE、NO ACTION、RESTRICT、SET NULL的区别
  13. 计算机室教师使用制度,[最新]教师计算机室管理制度
  14. iphone设置邮箱设置_如何使用iPhone设置Chromecast
  15. Express框架、Webstorm中创建Express项目
  16. 吴章金: 深度剖析 Linux共享库的“位置无关”实现原理
  17. 程序员接私单被警方抓走,企业应不应该起诉程序员赔偿?
  18. 如何实现Linux下的U盘(USB Mass Storage)驱动
  19. 零基础学习C++系列课程(一) 持续更新中
  20. 教授专栏08| 徐岩:青年震荡与青年危机

热门文章

  1. 造轮子:前端模板引擎
  2. JAVA练手--数组
  3. Thymeleaf的学习
  4. java两个数的最大公约数和最小公倍数
  5. 浏览Android系统源码的站点
  6. bootstrap使用modal动态对话框时,按回车键无法确认,反而取消对话框
  7. LeetCode Interview Qustions: Add Two Number
  8. python中布尔运算可以用于浮点数比较_简单谈谈Python中的几种常见的数据类型
  9. Ansible详解(一)——Ansible理论基础
  10. Redis详解(七)——Redis主从同步高可用架构