学习来源《Java与分布式系统》(机械工业出版社)
因为这学期开了分布式的课,而且中心对分布式的要求也比较大,所以最近接了一本分布式方面的书在努力学习。这些,就算是读书笔记吧。
套接字为需要相互通信的两个端口提供了通信通路。它一般有IP地址跟端口号来标识。Java.net包中提供的Socket类从操作系统的套接字服务中完整的抽象了出来,它通过一个简单的构造函数即可建立Socket实例。需要指定的参数为IP和端口号。本文将根据书中的一个聊天系统的实例学习套接字和流技术。
客户端的聊天客户类:
gui = new ChatFrame("chat with socket");
gui.input.addKeyListener(new EnterListener(this,gui));
gui.addWindowListener(new ExitListener(this));
首先创建一个socket类,用于实现与服务器的连接。然后建立读入流与读出流对象dis、dos,dis负责接受服务器传送过来的数据,在客户端刚被创建时,dos通过writeUTF(name)函数告诉服务器自己的名字.在连接建立后,dos.writeUTF(message)将直接与ChatHandler对象打交道.当关闭图形用户界面时,
将调用socket.close()函数.关闭相应的socket.
聊天服务器ChatServer:
ServerSocket ss = new ServerSocket(port);
while(true){
Socket client = ss.accept();
DataInputStream dis = new DataInputStream(client.getInputStream());
String name = dis.readUTF();
System.out.println("New client: "+name);
ChatHandler ch = new ChatHandler(name,client);
ch.start();}
服务器建立标准的套接字,并通过accept()方法监听端口,当有客户端寻址到ss对象后,变可建立连接.同时服务器端也建立个一个socket对象,并把其传送给流对象用于发送和接受数据.
信息处理器ChatHandler:
public class ChatHandler extends Thread {
.......
public static Vector handlers = new Vector();
public ChatHandler(String name, Socket socket) throws IOException {this.socket = socket;this.name = name;
dis = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
dos = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));}
public void run(){
try{
broadcast(name + "entered");
handlers.addElement(this);
while(true){String message = dis.readUTF();
broadcast(name + ": " +message);}
}catch(IOException e){
System.out.println("--Connection to user lost");
}finally{ handlers.removeElement(this); broadcast(name + " left");
try{
socket.close();
}catch(IOException e){
System.out.println("--Socket to user already closed?"); }
}
}
public static void broadcast(String message){
synchronized (handlers){
Enumeration e = handlers.elements();
while(e.hasMoreElements()){
ChatHandler ch = (ChatHandler)e.nextElement();
try{
ch.dos.writeUTF(message);
ch.dos.flush();
}catch(IOException e2){
ch.stop(); }}}}}
分享到:
相关推荐
本文详细介绍了Java套接字编程的基本概念和技术细节,包括套接字的工作原理、套接字的分类及其应用场景。通过本文的学习,读者应该能够掌握如何使用Java进行基本的网络编程,特别是如何利用`Socket`和`...
Java套接字聊天是一种基于Java编程语言实现的网络通信应用,它允许两个或多个设备通过TCP/IP协议进行数据交换,从而实现在线聊天功能。在这个系统中,通常会有一个服务器端程序(chat_socket_server)和一个或多个...
Java套接字编程是网络通信的核心技术之一,主要用于实现客户端与服务器之间的数据交换。本文将深入探讨Java中的Socket编程,包括基本概念、工作原理、创建和使用Socket的过程,以及常见问题和解决策略。 1. 基本...
文件名“Socket套接字—Java套接字编程上1”可能暗示了这是一个系列教程的第一部分,涵盖了基础知识和简单的客户端-服务器交互。实际源码可能包括客户端如何发起连接、发送数据,以及服务器如何监听、接收数据和响应...
基于这样的背景,开发一套基于Java套接字技术的多点互动通讯系统显得尤为重要。 #### 二、即时通讯系统的发展 即时通讯系统的发展经历了从简单的文本消息传递到多媒体内容共享的过程。早期的即时通讯软件主要侧重...
Java套接字编程是网络通信的核心技术之一,它允许两个应用程序通过网络进行数据交换。在Java中,套接字(Socket)是实现客户端-服务器模型通信的基础,它提供了低级别的、面向连接的、可靠的字节流服务。这篇笔记将...
Java套接字编程是Java开发网络软件的核心技术之一,利用Java提供的强大网络API,可以轻松地开发网络通信软件。在这篇文章中,我们将详细介绍套接字(Socket)的概念,并通过实例说明如何使用Network API操纵套接字,...
Java套接字网络编程是一种强大的技术,用于开发基于TCP/IP网络的Java程序。Java的这种力量来源于他独有的用于网络的API,这些API是一系列的类和接口,均位于包java.net和javax.net中。 套接字(Socket)是Java套接...
下面将详细讲解Java套接字编程的核心概念、原理以及如何应用于这个简单QQ的实现。 1. **Java套接字基础** Java套接字是Java网络编程的基础,分为ServerSocket和Socket两种类型。ServerSocket是服务器端使用的,...
本篇将详细讲解如何在Java环境下,利用UNIX域套接字连接并操作Redis,以及涉及的关键技术点。 首先,UNIX域套接字是同一主机上两个进程间通信的一种方式,它的优势在于相比于TCP/IP套接字,它无需经过网络协议栈,...
Java套接字编程是网络通信的核心技术之一,主要用于实现客户端与服务器端的双向通信。"Socket套接字—Java套接字编程(上1)"这个资料包可能包含了关于Java套接字的基础概念、创建和使用过程,以及相关实例。下面我们...
在“套接字数据库查询”这个主题中,我们主要关注如何使用Java的套接字技术来实现远程数据库查询。在这个期末考试中,你可能会遇到涉及以下知识点的问题: 1. **套接字概念**:套接字是Internet协议族中的一个抽象...
Java聊天程序基于Socket套接字实现,是一种基础的网络通信技术,主要用于客户端和服务器之间的数据交互。在Java中,Socket类代表一个网络连接,而ServerSocket类用于监听和接受来自客户端的连接请求。本教程适合Java...
Java套接字编程是网络编程中的基础概念,主要用于实现客户端与服务器之间的通信。在这个学习资料中,我们将深入探讨Java中的套接字(Socket)技术,包括它的原理、使用方法以及常见应用。 首先,理解Java套接字的...
CS模式下的即时通信Demo 在本项目中,客户端与服务器端均采用Java为开发语言,使用C/S模式进行开发,实现...同时,考虑到以上客户端界面为控制台,利用Flex技术制作了一个简单的客户端程序(WebIM.mxml),用于测试。
Java网络编程是开发分布式应用程序的关键技术,而Socket套接字是实现网络通信的基础。本学习资料包涵盖了关于Java网络编程的全面知识,包括Socket套接字的使用和网络协议的理解。 首先,我们要理解Java中的Socket。...
- Java的`java.net.Socket`和`ServerSocket`类分别代表客户端和服务器端的套接字。 4. **错误处理和优化** - 网络通信中,错误处理非常重要,如网络中断、超时等,需要通过异常捕获或者返回值检查来处理。 - ...
Java套接字程序设计是网络通信中的核心技术,主要用于实现客户端与服务器之间的数据交换。本文将对比分析TCP(传输控制协议)和UDP(用户数据报协议)两种不同类型的套接字编程,探讨它们在网络通信中的应用及其特点...
【基于套接字通信的远程截屏显示与控制技术】是一种在分布式系统中实现远程设备管理的方法,尤其适用于远程设备的维护、监控和故障诊断。该技术利用客户端/服务器(Client/Server)模式,其中一台计算机(本地机)...
在计算机编程领域,尤其是网络编程中,线程同步与异步套接字编程是至关重要的概念,它们直接影响到程序的性能、稳定性和可扩展性。本文将深入探讨这两个主题,并结合实际应用进行详细阐述。 首先,我们需要理解线程...