`

聊天室的客户端Client

 
阅读更多
package chat;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

/**
 * 聊天室的客户端
 * @author adminitartor
 *
 */
public class Client {
	/*
	 * 套接字
	 * 底层封装这TCP协议,使用其进行网络通讯
	 */
	private Socket socket;
	/**
	 * 构造方法,用来初始化客户端
	 * @throws Exception 
	 */
	public Client() throws Exception{
		try {
			/*
			 * 实例化Socket时需要传入两个参数
			 * 参数1:服务端的ip地址
			 * 参数2:服务端的端口号
			 * 通过IP可以连接到服务端计算机,通过
			 * 端口连接到运行在服务端计算机上的
			 * 服务端应用程序。
			 * 创建Socket的过程就是连接的过程,所以
			 * 若服务端没有响应,这里会抛出异常
			 */
			System.out.println("正在连接服务端...");
			socket = new Socket(
				"localhost",8088	
			);
			System.out.println("已连接服务端!");
		} catch (Exception e) {
			System.out.println("客户端初始化失败!");
			throw e;
		}
	}
	/**
	 * 启动客户端的方法
	 */
	public void start(){
		try {
			Scanner scanner = new Scanner(System.in);
			//先要求用户输入一个昵称
			String nickName = null;
			while(true){
				System.out.println("请输入昵称:");
				nickName = scanner.nextLine();
				if(nickName.length()>0){
					break;
				}
				System.out.println("至少输入一个字符.");
			}
			
			/*
			 * 若想向服务端发送信息,需要通过socket
			 * 获取输出流,通过该流写出的数据就会通过
			 * 网络发送至服务端了。
			 */
			OutputStream out
				= socket.getOutputStream();
			
			OutputStreamWriter osw
				= new OutputStreamWriter(out,"UTF-8");
			
			PrintWriter pw
				= new PrintWriter(osw,true);
			//首先将昵称发送给服务端
			pw.println(nickName);			
			System.out.println("欢迎你:"+nickName+"!开始聊天吧!");
			
			
			
			//首先启动接受服务端消息的线程
			ServerHandler handler = new ServerHandler();
			Thread t = new Thread(handler);
			t.start();	
			
			
			
			
			
			
			while(true){
				String message = scanner.nextLine();
				pw.println(message);
			}
			
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		try {
			Client client = new Client();
			client.start();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 该线程用来接收并处理服务端发送过来的消息
	 * @author adminitartor
	 *
	 */
	private class ServerHandler 
						implements Runnable{
		
		public void run(){
			try {
				
				BufferedReader br = new BufferedReader(
					new InputStreamReader(
						socket.getInputStream(),"UTF-8"	
					)	
				);
				
				String message = null;
				while((message = br.readLine())!=null){
					System.out.println(message);
				}
				
				
			} catch (Exception e) {
				// TODO: handle exception
			}
		}
		
	}
}






 

分享到:
评论

相关推荐

    MFC聊天室客户端服务器端

    【MFC聊天室客户端服务器端】是一个基于Microsoft Foundation Class (MFC)库开发的聊天室应用程序,它包含客户端和服务器端两部分。MFC是微软为Windows平台提供的一套C++类库,用于简化Windows应用程序的开发。在这...

    图形用户界面聊天室 客户端和服务器

    该聊天室系统主要由两部分组成:客户端(Client)与服务器(Server)。 ##### 3.1 服务器端(Server) 服务器端负责接收客户端连接请求,并处理客户端发送的数据。 - **初始化服务器** - 创建 `ServerSocket` 对象监听...

    IRC聊天室客户端程序C++代码

    本项目提供了一个使用C++编写的IRC聊天室客户端程序,对于想要学习网络编程,尤其是TCP/IP通信和多线程处理的开发者来说,这是一个非常有价值的资源。 1. IRC协议基础: IRC协议定义了客户端如何连接到服务器、...

    聊天室 客户端 服务端程序

    在IT领域,构建一个聊天室客户端和服务端程序是学习网络通信和实时数据交换的重要实践。这个项目涵盖了多个关键知识点,包括网络编程、多线程、数据传输协议等。以下是这些核心概念的详细解释: 1. **网络编程**:...

    Python 聊天室 客户端和服务端 聊天 客服端与客户端聊天

    在聊天室项目中,我们通常会创建两个主要的部分:服务端(Server)和客户端(Client)。服务端负责监听来自客户端的连接请求,并管理多个客户端的连接,确保信息的正确传递。客户端则用来连接服务端,发送和接收消息...

    手机客户端C/S结构聊天室

    手机客户端C/S(Client/Server)结构聊天室是一种常见的移动通信应用设计模式,它涉及客户端应用程序和服务器端程序之间的交互。在这个系统中,手机不仅作为用户界面的展示设备,还扮演了服务器的角色,处理来自其他...

    python写的socket聊天室程序,包括客户端和服务端

    在这个场景中,我们有一个基于Python编写的socket聊天室程序,它包含了客户端(client.py)和服务端(server.py)。这个程序允许多个客户端同时连接到服务端,进行双向的信息交流。这里我们将深入探讨涉及的Python...

    c# 局域网聊天室 客户端与服务端源代码

    《C#局域网聊天室:客户端与服务端源代码详解》 在计算机科学领域,网络编程是一项核心技能,尤其对于开发实时通信应用如聊天软件来说更是必不可少。本篇文章将深入探讨C#语言在局域网环境下的网络编程,特别关注...

    ClientSocketDemo.java 聊天室 客户端Java源代码

    总的来说,"ClientSocketDemo.java"展示了如何使用Java Socket API创建一个简单的聊天室客户端。这个客户端能够连接到服务器,发送用户输入的消息,并接收服务器返回的响应。通过这样的实践,开发者可以学习到网络...

    学位论文-—基于java的聊天室客户端.doc

    基于 Java 的聊天室客户端 本文档介绍了一个基于 Java 技术的聊天室客户端的设计和实现,旨在提供一个功能强大且稳定的聊天工具。该系统采用 Java 语言开发,使用 Eclipse 作为基本开发环境,充分发挥了 Java 的...

    Python 聊天室 程序 客户端 服务端

    在Python编程领域,创建聊天室程序是学习网络通信和多线程等概念的良好实践。本项目包含客户端(Client.py)和服务端(Server.py),适用于初学者掌握基础的网络编程技能。我们将深入探讨这两个核心文件以及相关知识...

    简单的用户和客户端网络聊天室源码

    这是一个基于Java的简单用户和客户端网络聊天室的源码项目,非常适合初学者学习网络编程和基本的客户端-服务器通信机制。下面将详细解释这个项目的各个方面。 首先,我们要了解的是网络编程的基本概念。网络编程是...

    java多人聊天室(服务器端和客户端)

    在聊天室中,服务器端需要监听客户端的连接,并通过`InputStream`读取客户端发送的信息,然后将信息广播给其他在线的客户端;客户端则通过`OutputStream`将用户输入的信息发送给服务器。 项目结构通常包括以下部分...

    聊天室Client 端对端的聊天室

    端对端的聊天室 客户端 希望对大家有帮助 呵呵

    局域网聊天室(带客户端和服务端)

    Client 聊天室客户端代码 Bin 已编译程序 Web 聊天室浏览器端 配置如下: ①下载好Xampp并安装(http://sourceforge.net/projects/xampp/),然后将Web文件夹下的Chat文件夹里的内容复制到"Xampp安装目录\htdocs\...

    java 聊天室 有服务器 客户端

    Java聊天室程序是一种基于网络通信的应用,它包含服务器和客户端两个关键部分。在这个场景中,`Server.java` 文件是服务器端代码,而 `Client.java` 文件则是客户端代码。以下是关于这个Java聊天室程序的一些详细...

    聊天室 +客户端+安装说明

    【标题】:“聊天室 +客户端+安装说明”指的是一个包含聊天室功能的客户端软件及其安装说明的资源。这个源码可能是一个多人视频聊天室的实现,允许用户进行实时的音频和视频交流。 【描述】:“很好的多人吧视频...

    一款用mfc做的简单的聊天室

    从压缩包子文件的文件名称列表来看,“Client”和“Server”这两个文件可能分别代表聊天室的客户端和服务器端程序。客户端通常是用户进行交互的部分,而服务器端则负责接收和广播消息,维持聊天室的运行。 在实际的...

    chatroom_client.rar_TCP/IP聊天室_chatroom tcp client

    TCP/IP聊天室客户端,如"chatroom_client.rar"所示,是一种基于TCP/IP协议栈实现的通信应用。在本文中,我们将深入探讨TCP/IP协议、聊天室客户端的设计原理以及相关技术。 首先,TCP/IP(Transmission Control ...

    C++ select模型 异步SOCKET 聊天室服务服客户端

    本篇文章将深入探讨使用C++实现的基于`select`模型的异步SOCKET通信,特别关注如何构建一个简单的聊天室服务端和客户端。 首先,`select`模型是网络编程中处理多路复用I/O(Multiplexing I/O)的一种方式,允许程序...

Global site tag (gtag.js) - Google Analytics