热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javasocket两台电脑_socket连接两台电脑通信java

网上看的,测试成功,写下来服务器端importjava.net.*;importjava.io.*;publicclassServer{privateServerSocketser

网上看的,测试成功,写下来

服务器端

import java.net.*;

import java.io.*;

public class Server {

private ServerSocket server;

private Socket client;

public Server() {

boolean flag = true;

try {

server = new ServerSocket(8888); //端口

System.out.println(“服务器正在等到客户端连接……”);

while (flag) {

client = server.accept(); //阻塞

new ServerThread(client).start();

}

server.close();

} catch (Exception e) {

}

}

public static void main(String[] args) {

new Server();

}

private class ServerThread extends Thread {

private Socket clientThread;

private PrintStream out;

private BufferedReader in;

private boolean flag = true;

public ServerThread(Socket client) {

this.clientThread = client;

System.out.println(“主机与客户端成功建立连接,开始通讯!!”);

}

public void run() {

try {

/*

* 超时判断:设置超时时间300秒,中断连接或者300秒内客户端无回应信息则认为中断

* 缺点便是必须把超时时间设置很长,否则客户端待机也认为超时处理,无法判断是否端口

*/

clientThread.setSoTimeout(300000);

out = new PrintStream(client.getOutputStream());

in = new BufferedReader(new InputStreamReader(client.getInputStream()));

while (flag) {

String str = in.readLine(); //阻塞

System.out.println(“客户端:” + str);

out.println(“主机成功接收到您的信息!!”);

}

client.close();

} catch (Exception e) {

//如果异常是连接异常,则输出连接断开

if (e.getMessage() == “Connection reset”) {

System.out.println(“客户端已断开连接!!”);

}

}

}

}

}

客户端

import java.net.*;

import java.io.*;

public class Client {

private Socket client;

public Client() {

try {

System.out.println(“正在连接服务器……”);

client = new Socket(“192.168.218.168”, 8888); //阻塞

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));

PrintStream out = new PrintStream(client.getOutputStream());;

boolean flag = true;

System.out.println(“成功连接到主机,开始通讯!!”);

while (flag) {

System.out.printf(“请输入信息:”);

out.println(input.readLine()); //阻塞

//判断是否与主机断开

if (isConnected()) {

System.out.println(“发生成功!!”);

System.out.println(“主机:” + in.readLine());

} else {

System.out.println(“发生失败!!”);

System.out.println(“与服务器断开连接!!”);

client.close();

break;

}

}

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

//判断服务器是否断开的方法,

//通过OutputStream发送一段测试数据,如果发送失败就表示远端已经断开连接

//但会与正常的传送干扰,所以用sendUrgenData

public boolean isConnected() {

try {

client.sendUrgentData(0xFF);

return true;

} catch (Exception e) {

e.printStackTrack();

return false;

}

}

public static void main(String[] args) {

new Client();

}

}


推荐阅读
  • 字节流(InputStream和OutputStream),字节流读写文件,字节流的缓冲区,字节缓冲流
    字节流抽象类InputStream和OutputStream是字节流的顶级父类所有的字节输入流都继承自InputStream,所有的输出流都继承子OutputStreamInput ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 在分析Android的Audio系统时,我们对mpAudioPolicy->get_input进行了详细探讨,发现其背后涉及的机制相当复杂。本文将详细介绍这一过程及其背后的实现细节。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 本文详细解析了客户端与服务器之间的交互过程,重点介绍了Socket通信机制。IP地址由32位的4个8位二进制数组成,分为网络地址和主机地址两部分。通过使用 `ipconfig /all` 命令,用户可以查看详细的IP配置信息。此外,文章还介绍了如何使用 `ping` 命令测试网络连通性,例如 `ping 127.0.0.1` 可以检测本机网络是否正常。这些技术细节对于理解网络通信的基本原理具有重要意义。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 如何在PHP中准确获取服务器IP地址?
    如何在PHP中准确获取服务器IP地址? ... [详细]
  • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
author-avatar
Tibetan-妍自_557
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有