`

java分布式开发TCP/IP+BIO(基于消息方式实现系统间的通信)

阅读更多
TCP/IP +BIO
在java中可以基于Socket,SocketServer来实现TCP/IP+BIO的系统间通信,Socket主要用于实现建立连接及网络IO操作,SocketServer主要用于实现服务器端口的监听及SCoket对象的获得 为了满足服务器端能同时接受多个连接发送的请求,通常采用的方法是在accept获取Socket后,将此Socket放入一个线程中处理,通常将此方式称为一连接一线程

客户端代码
package org.cui.TCPIP;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class BioClient {

public static void main(String[] args) throws Exception{
Socket socket = new Socket("127.0.0.1",7888) ;
BufferedReader clientIn = new BufferedReader(new InputStreamReader(System.in)) ;
BufferedReader serverIn  = new BufferedReader(new InputStreamReader(socket.getInputStream())) ;
PrintWriter out = new PrintWriter(socket.getOutputStream() ,true ) ;
boolean flag = true ;
while(flag){
System.out.println("请输入发送信息") ;
String clientSay = clientIn.readLine() ;
if(clientSay == null ||"".equals(clientSay)){
flag = false ;
break ;
}
if("bye".equals(clientSay)){
flag = false ;
break ;
}
out.println(clientSay) ;
System.out.println("服务器:"+serverIn.readLine()) ;
}
clientIn.close() ;
serverIn.close() ;
out.close() ;
socket.close() ;
}
}

服务器端代码

package org.cui.TCPIP;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class BioServer {
private ServerSocket serverSocket ;
private Socket socket ;
private int  iClient ;

public BioServer() throws IOException{
serverSocket =  new ServerSocket(7888) ;
iClient = 0  ;
while(true) {
socket = serverSocket.accept() ;
System.out.println("共有多少:"+(++iClient)) ;
new Thread(new ClientThread(socket)).start() ;
}
}


public static void main(String[] args) {
try {
new BioServer() ;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

采用线程  代码:
package org.cui.TCPIP;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class ClientThread implements Runnable {
private Socket client ;
public ClientThread(Socket client) {
this.client = client ;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream())) ;

boolean flag = true ;
while(flag){
String clientSay = reader.readLine() ;
if (clientSay == null || "".equals(clientSay)) {
flag = false;
break;
}
if ("bye".equals(clientSay)) {
flag = false;
break;
}
System.out.println("client说:"+clientSay);
PrintWriter out = new PrintWriter(client.getOutputStream() ,true ) ;
out.println("client端 说的是:"+clientSay) ;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}



分享到:
评论
1 楼 songhaikang 2012-08-09  
这叫多线程服务器,怎会和分布式有关呢

相关推荐

    分布式Java中的TCP/IP+NIO

    在分布式Java应用中,TCP/IP协议和NIO(非阻塞I/O)是构建高性能、高可用性系统的关键技术。TCP/IP是一种传输层协议,确保数据在网络中的可靠传输,而NIO是Java提供的一个I/O模型,允许程序进行非阻塞的数据读写,...

    JAVA分布式开发

    这些知识点构成了JAVA分布式开发的核心内容,不仅需要理解各种通信机制,还要掌握并发编程、分布式系统设计原则以及优化策略,对于应对南京工业大学期末考试复习至关重要。深入理解和实践这些概念,将有助于构建和...

    0729分布式通信框架-RMI1

    总的来说,分布式通信框架是构建大规模、高性能系统的关键技术,RMI作为Java的RPC实现,简化了跨网络的Java对象调用,而理解TCP/IP、序列化和安全协议对于开发高效、安全的分布式系统至关重要。

    Java网络编程与分布式计算

    此外,Java的JMS(Java Message Service)提供了一种异步通信的方式,用于在分布式系统中传递消息。 分布式计算中另一个重要的Java技术是Jini,它是一种服务发现和管理框架,使得网络中的设备和服务能够自动发现...

    构建高性能的大型分布式java应用

    在分布式Java应用中,基于消息方式进行系统间通讯是一种常见的策略。这种方式的核心在于系统之间的交互是通过发送消息来完成的,这些消息可以是简单的字节流或者复杂的Java对象。 - **TCP/IP vs UDP/IP**:TCP/IP...

    java 网络编程 java 网络编程

    Java网络编程是Java开发中的重要领域,主要涉及如何在不同设备之间通过网络进行通信。在这个领域,TCP/IP协议栈起着核心作用,因为它是互联网通信的基础。Java提供了丰富的API来支持网络编程,主要包括四个关键部分...

    java使用socket和c++通信

    在IT行业中,网络通信是软件开发中的重要组成部分,特别是在分布式系统和跨平台应用中。本话题聚焦于"java使用socket和c++通信",这是一个典型的跨语言、跨平台的网络编程场景。Java和C++都是广泛应用的编程语言,...

    分布式部分概念

    综上所述,分布式系统的构建离不开通信协议的支持,而TCP/IP协议作为互联网的基础,其三次握手四次挥手机制更是确保了数据的可靠传输。此外,序列化与反序列化技术为分布式系统中数据的交换提供了便利,而HTTPS则为...

    Java远程技术.pdf

    Java远程技术广泛应用于各种需要远程通信的Java应用开发中,了解这些技术对于构建稳定、可扩展的分布式系统至关重要。由于远程通信可能会引入性能问题和安全问题,因此在实施过程中需要特别注意传输的安全性和效率。

    基于Java的实例开发源码-NIO网络框架 xSocket.zip

    在实际开发中,使用xSocket可以快速构建出高性能的网络服务,如聊天服务器、游戏服务器、分布式系统中的通信模块等。通过解压“NIO网络框架 xSocket.zip”,你可以得到xSocket的源码,这将有助于深入理解NIO在网络...

    Java高级架构必备知识点

    - **盘龙真诀之分布式消息系统**:构建稳定的分布式消息系统。 - **金刚之躯之分布式跟踪系统**:构建可靠的分布式追踪系统。 **7.15 微服务架构技术栈分析** - **Spring Boot的使用**:掌握Spring Boot的基础用法...

    Java高级开发工程师面试笔记.zip

    Java作为一门广泛使用的编程语言,尤其在企业级应用开发领域占据着重要地位。对于Java高级开发工程师来说,面试不仅考察基础语法和编程能力,更关注的是深入理解、问题解决和项目经验。以下是一些Java高级开发工程师...

    Java语言程序设计进阶篇答案与代码

    6. **网络编程**:Java提供Socket和ServerSocket类进行TCP/IP通信,DatagramSocket和MulticastSocket支持UDP协议。理解网络编程有助于开发分布式应用。 7. **JVM内存管理**:包括对象生命周期、垃圾收集机制、内存...

    2020-Java工程师面试宝典-V1.0.rar

    12. **分布式相关**:分布式系统的基本概念,如CAP理论、BASE理论,以及分布式缓存、分布式锁、分布式消息队列(如RabbitMQ、Kafka)等。 以上这些知识点都是《2020-Java工程师面试宝典-V1.0》中可能涉及的内容,...

    java面试——深圳-商汤科技-Java高级.zip

    8. **网络编程**:理解TCP/IP协议,会编写Socket编程,了解HTTP协议,能使用Java实现网络通信。 9. **Spring框架**:Spring作为主流的企业级应用框架,其依赖注入、AOP、事务管理、MVC等核心概念应深入掌握。同时,...

    java架构师面试题1000道

    Java架构师面试题1000道集合涵盖了广泛的话题,旨在测试和提升候选人在Java编程、软件设计、系统架构、性能优化以及项目管理等多个领域的专业技能。以下是一些可能涉及的关键知识点: 1. **Java基础知识**:这包括...

    平安java面试题

    Java编程语言是软件开发领域广泛使用的工具,尤其在企业级应用中占据主导地位。平安公司作为全球知名金融机构,其对Java技术的要求自然不言而喻。面试中的Java问题通常涵盖基础语法、数据结构、算法、多线程、集合...

    03-05-28-阶段性总结1

    Java中的Socket编程提供了基于BIO的网络通信方式,但其阻塞特性限制了并发处理能力。NIO(New IO)引入了多路复用机制(如select、epoll),Netty作为高效的异步事件驱动框架,被广泛应用于Dubbo、Zookeeper、Kafka...

Global site tag (gtag.js) - Google Analytics