今天学习了一下系统间通信的方式之一,socket。Socket ServerSocket 是类似于管道通信的,一个Socket对应一个ServerSocket,为了解决多个客户端Socket 与ServrSocket通信,需要使用多线程。我是一名初学者,大家勿喷。代码如下:
服务端代码:
public class MultiUser extends Thread {
private Socket client;
public MultiUser(Socket c){
this.client = c;
}
public void run(){
try {
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
while(true){
String str = in.readLine();
System.out.println("客户端输入:"+str);
out.println("服务端已经收到");
out.flush();
if(str.equals("end")){
break;
}
}
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(3333);
while(true){
MultiUser mu = new MultiUser(ss.accept());
mu.start();
}
}
}
客户端代码:
public class SocketClinetTest {
/**
* @param args
* @author zcc
* @throws IOException
* @throws UnknownHostException
* @date 2016-7-27上午10:56:18
*/
public static void main(String[] args) throws UnknownHostException, IOException {
//接收服务端
Socket server = new Socket(InetAddress.getLocalHost(),3333);
//写
BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
//读
PrintWriter out = new PrintWriter(server.getOutputStream());
//键盘录入
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
while(true){
String str =wt.readLine();
out.println(str);
//刷新内存缓冲区
out.flush();
if(str.equals("end")){
break;
}
System.out.println("服务端传递的值:"+in.readLine());
}
server.close();
}
}
相关推荐
Socket编程在IT领域中扮演着重要的角色,尤其在进程间通信(IPC)方面。通过socket,不同的进程可以相互通信,实现数据交换和协调工作。本文将深入探讨如何利用socket来实现在同一台机器上三个进程间的通信,同时...
Linux提供了多种进程间通信的方法,包括信号量、消息队列、共享内存以及本文重点介绍的套接字(Socket)等。本文将详细讲解如何利用套接字来进行进程间通信,并通过具体的代码示例进行说明。 #### 二、套接字的基本...
在本文中,我们将深入探讨如何利用Socket编程来构建一个基于网络的即时通信系统。 Socket是Internet协议族中的核心组件,它为应用程序提供了低级别的网络通信接口。在即时通信系统中,Socket扮演着连接两端用户的...
理解并掌握Socket IPC不仅可以帮助你构建分布式系统,也可以在单机应用中实现灵活的进程间通信。通过阅读和分析提供的源代码,你可以深入了解Socket的工作原理,学习如何处理连接异常,以及如何优化数据传输效率。这...
### Linux异步通信socket详解 #### 一、异步通信概览 异步通信是现代计算机网络中的一个重要概念,尤其在Linux环境下,异步通信机制提供了高效的数据传输方式,能够处理大量的并发连接,这对于构建高性能的网络...
在IT领域,串口通信和Socket编程是两个重要的概念,特别是在开发嵌入式系统、设备控制和网络应用程序时。在Windows环境下,Visual C++(简称VC++)是常用的开发工具,它提供了丰富的API来实现这些功能。让我们深入...
在.NET框架中,C#为开发人员提供了丰富的网络通信库,包括TCP、UDP以及Socket通信。这些协议在软件开发中广泛应用于服务器与客户端之间的数据交换,尤其在分布式系统和实时应用中扮演着重要角色。本项目...
Java基于Socket的进程间通信(IPC)是一种网络编程技术,常用于实现客户端和服务器之间的通信。在这个场景下,我们讨论的是一个简单的聊天小程序,它利用了Java的Socket库来搭建客户端与服务器之间的桥梁,实现数据...
这里的Socket通常是指网络套接字,它在操作系统层面上提供了一种进程间通信的机制,允许不同进程或者甚至不同计算机之间的进程通过网络进行数据交换。 **描述解析:** "使用Socket来实现跨进程间的通信" 提示我们,...
在IT领域,网络通信是不可或缺的一部分,而Java作为一种强大的编程语言,提供了丰富的API来支持网络编程,特别是通过Socket实现客户端/服务器(C/S)架构的即时通信系统。本项目"基于Java实现的socket即时通信系统...
- 即时聊天应用:基于Socket的实时通信系统,如简单的聊天室。 - 远程控制:通过Socket实现远程服务器的控制和监控。 8. **NIO(非阻塞I/O)**: - Java NIO(New I/O)库提供了非阻塞的Socket通信方式,提高了...
"Socket 编程(最简单的 Socket 通信功能)" 本文将详细介绍 Socket 编程的基本流程和实现方法,包括服务器端和客户端的实现步骤。 服务器端实现 在服务器端,我们首先需要建立一个EndPoint 对象,指定服务器的 ...
Linux系统中的Socket通信程序是网络编程的一个重要领域,它提供了进程间通过网络进行通信的能力。在本项目中,我们深入探讨了如何在Linux环境下利用Socket API实现不同进程间的通信,包括本地文件操作以及TCP/IP协议...
本文将深入探讨如何利用UDP(User Datagram Protocol)协议与socket文件来实现两个进程间的通信,特别是在Linux环境中。UDP是一种无连接的传输层协议,它不提供确认、顺序保证或错误校正,因此适用于对实时性要求较...
C++ Socket通信库是用于实现网络通信的一种工具,它基于操作系统提供的Socket接口,为开发者提供了一种在C++程序中进行网络数据交换的标准方法。Socket库简化了网络编程,允许程序员通过调用特定的API函数来创建、...
Java Socket通信是网络编程中的基础部分,用于实现两个应用程序之间的双向通信。自定义消息协议是在标准TCP/IP协议之上...通过这个过程,我们可以灵活地构建满足特定需求的通信系统,实现客户端和服务器间的高效交互。
Socket可以看作是网络上的进程间通信的端点,它定义了通信双方如何建立连接、交换数据以及断开连接的规则。在Windows中,我们通常使用Berkeley Sockets API,它源于UNIX系统,但在Windows上同样得到了广泛支持。 **...
Socket通信中间件是一种用于在不同系统之间传递消息的关键技术,它构建在TCP/IP协议栈之上,为应用程序提供了低级别的网络通信接口。中间件的角色在于简化跨系统的数据交换,通过提供标准化的方式来连接分布式应用,...
在本示例中,"socket进程间通信的一个一对多例子"着重于利用socket来实现这样的通信模式。Socket是操作系统提供的一种通信接口,允许不同进程或者不同计算机之间的进程进行数据交换。 在标题和描述中提到的"一个...
本文将深入探讨如何使用C++实现异步通信,并通过socket接口进行消息的发送。异步通信是网络编程中的一种重要模式,它允许程序在等待响应时继续执行其他任务,从而提高系统的整体效率。 首先,我们要理解什么是...