运行客户端程序将创建一个客户端套接字,并与指定的服务器建立连接,接收了服务端发来的消息后关闭连接。服务端启动后会循环接收客户端连接,在接收到连接后,向该客户端发送 “Hello World!”.

实现在同一局域网下的一次简单的单向通信。

服务端 Server.java:

package cs;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;public class Server {public void start(int port, int num, String ipAddress) {try {ServerSocket serverSocket = new ServerSocket(port, num, InetAddress.getByName(ipAddress));System.out.println("Server started on " + ipAddress + ":" + port);//服务端循环接收客户端连接,在接收到连接后,向该客户端发送"Hello World!"while (true) {Socket client = serverSocket.accept();System.out.println("Client " + client.getInetAddress() + " connected.");//向当前客户端发送消息OutputStream out = client.getOutputStream();out.write("Hello World!".getBytes(StandardCharsets.UTF_8));out.flush();   //作用是强制将缓冲区的数据输出到目的地,确保数据能够及时发送//进入死循环,保持连接不断开。持续监听当前客户端发送的消息,并在接收到消息时输出消息内容while (true) {//接收客户端发送的消息byte[] buf = new byte[1024];int len = client.getInputStream().read(buf);//若客户端断开连接if (len == -1) {System.out.println("Client " + client.getInetAddress() + " disconnected.");break;}//用于接收客户端发送的消息,注释掉是因为还未在客户端中写入发送消息的功能
//                    else {//                        String str = new String(buf, 0, len, StandardCharsets.UTF_8);
//                        System.out.println("Received message from client " + client.getInetAddress() + ": " + str);
//                    }}}} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {Server server = new Server();server.start(8888, 10, "192.168.202.31");//服务端在IP地址192.168.202.31 上启动,并设置端口号为8888//在ServerSocket这个函数中,第二个参数为backlog:指定连接请求队列的长度,如果连接请求队列已满,将拒绝新的连接请求。}
}

客户端 Client.java:

package cs;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.nio.charset.StandardCharsets;public class Client {public void start(String serverIp, int serverPort) {try {Socket socket = new Socket(serverIp, serverPort);System.out.println("Connect to the server " + socket.getRemoteSocketAddress());//接收服务端发送的消息InputStream in = socket.getInputStream();byte[] buf = new byte[1024];int len = in.read(buf);String str = new String(buf, 0, len, StandardCharsets.UTF_8);System.out.println("Received message from the server: " + str);//关闭连接socket.close();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {Client client = new Client();client.start("192.168.202.31", 8888);   //监听IP地址192.168.202.31 的8888端口}
}

Java基于socket编程实现局域网内简单通信相关推荐

  1. 【Java高级】初探socket编程 ——JavaSocket连接与简单通信

    新学期生活开始一段时间了,要继续学习一些新的技术(这里指socket /doge),目标是尝试完成一个在线即时聊天的小程序(尽量不咕).会更新一系列socket编程的技术文章,欢迎关注交流~ 那么千里 ...

  2. api有哪些 javasocket_基于java的socket编程及API解析

    一.socket通讯过程 1.socket与socket编程简介: socket 被翻译为"套接字",它是计算机之间进行通信的一种约定或一种方式.通过 socket 这种约定,一台 ...

  3. socket recv 服务端阻塞 python_网络编程(基于socket编程)

    网络编程(基于socket编程) socket套接字:应用程序通常通过socket"套接字"向网络发送请求或应答网络请求,是主机间或同一计算机中的进程间相互通讯 socket是介于 ...

  4. Java基于socket服务实现UDP协议的方法

    转载自 Java基于socket服务实现UDP协议的方法 这篇文章主要介绍了Java基于socket服务实现UDP协议的方法,通过两个简单实例分析了java通过socket实现UDP发送与接收的技巧, ...

  5. Socket编程Http下载的简单实现

    Socket编程Http下载的简单实现 - Mr.DejaVu - 博客园 <C/C++> Socket编程Http下载的简单实现 下载原理: 网上介绍很多,就是按照Http协议,使用So ...

  6. 基于可编程超表面的雷达通信一体化系统

    微波射频网 (MWRF.NET) 消息:在5G/6G无线通信.智慧城市.智能协作等新型民用和军用需求的推动下,雷达探测和无线通信呈现融合的趋势.雷达通信一体化技术成为实现集成化.通用化.智能平台的重要 ...

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

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

  8. 基于 P2P 技术的 Android 局域网内设备通信实践

    Android 局域网内的多设备通信方式有多种,其中常见的方式有: 基于 TCP/UDP 的 Socket 通信 基于 Bluetooth 的近场通信 基于 Wifi 的 Wi-Fi Direct 连 ...

  9. Java 网络 socket 编程

    使用套接字实现基于 TCP 协议的服务器和客户机程序 依据 TCP 协议,在 C/S 架构的通讯过程中,客户端和服务器的 Socket 动作如下: 客户端: 1.用服务器的 IP 地址和端口号实例化 ...

最新文章

  1. AI规模化落地,英特尔至强的七重助力
  2. java懒加载设计模式_java设计模式——单例模式
  3. Educational Codeforces Round 73 (Rated for Div. 2)
  4. php7 返回值,7.6.4 函数返回值
  5. CV Code | 计算机视觉开源周报 20190604期
  6. 使用Qt生成第一个窗口程序
  7. [异常解决] How to build a gcc toolchain for nRF51 on linux (very detailed!!!)
  8. 必 备 习 题 集 (五)
  9. Online Classification
  10. Linux使用openssl实现RSA非对称加密
  11. JavaScript数据类型之String
  12. 模式识别算法:SVM支持向量机
  13. endnote正版软件多少钱_销售endnote软件到底价格可以购买 保证正版软件
  14. python尼姆游戏_一个傻傻的尼姆游戏及其Python实现
  15. ANE for Android Setp by Step
  16. axios 的简单增删查改 使用json-server启动的josn
  17. C# 文字识别(OCR)
  18. android文字转语音文件格式,Android文字转语音
  19. Spring @InitBinder注解
  20. 原生微信小程序实现号码隐藏,用****代替

热门文章

  1. 数字孪生开发 数字孪生开发软件
  2. 黎明杀机因为计算机丢失,黎明杀机丢失存档怎么办 黎明杀机丢失存档解决办法介绍-游侠网...
  3. vivado 配置matlab,Matlab vivado
  4. 【文档】web系统非功能性需求
  5. oracle 磁带 恢复,关于磁带库rman备份恢复的案例
  6. Listen的安装各使用方法(附官网和安装包链接。)
  7. 胖了,也是该减减肥了
  8. 【网络篇】第四篇——网络字节序
  9. 【更新】绝地求生超火分屏雷达手机IPAD电脑教程
  10. 华为防火墙笔记-网络攻击的原理和防范