`
Supanccy2013
  • 浏览: 227890 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java socket简单写了一个即时通讯工具(代码有待优化。)

    博客分类:
  • java
阅读更多
1,服务端不断轮训创建socket链接,一旦链接成功,启动两个服务端进程,处理服务端的不断接受、和不断发送。
package com.supan;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
	public static void main(String[] args) throws Exception {
		ServerSocket server=new ServerSocket(4704);
		while(true){
			Socket socket=server.accept();
		    if(socket!=null){
		    	 System.out.println("客户端已经连接,服务器开启线程处理这个连接。");
		    	 new SendThread(socket).start();
		    	 new RecevidThread(socket).start();
		    }	
		}
	}
}

2,发送线程(服务端、客户端的发送)都调用这个
package com.supan;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/*
 * 该类主要用于服务端接受本地系统的输入数据,并且发松到客户端
 */
public class SendThread extends Thread {
	private Socket socket;
	private String line;
	private BufferedReader is;
	private PrintWriter os;
	public SendThread(Socket socket) {
		this.socket = socket;
	}
	public void run() {
		try {
			BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
			os = new PrintWriter(socket.getOutputStream());
			while (true) {
				line = sin.readLine();
				// 把系统输入的数据放入到socket的输出流中
				os.println(line);
				os.flush();
				// 读取socket的输入流并打印出来
			}
		} catch (Exception e) {
			System.out.println("系统输入数据,和客户端输入数据时出现异常");
		}
	}
}


3,接受线程(服务端、客户端的发送)都使用这个
package com.supan;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/*
 * 该类主要负责不停的读取客户端传过来的数据,并打印到控制台
 */
public class RecevidThread extends Thread {
	private Socket socket;
	private String line;
	private BufferedReader is;
	private PrintWriter os;
	public RecevidThread(Socket socket) {
		this.socket = socket;
	}
	public void run() {
		// 获取socket的输入流
		try {
			is = new BufferedReader(new InputStreamReader(
					socket.getInputStream()));
			while (true) {
				System.out.println("客户端传过来的数据是:" + is.readLine());
			}
		} catch (Exception e) {
			System.out.println("系统输入数据,和客户端输入数据时出现异常");
		}
	}
}

4,客户端接受线程
package com.supan;
import java.net.Socket;
public class Client {
	public static void main(String[] args) throws Exception {
		Socket socket=new Socket("localhost",4704);
		if(socket!=null){
			new SendThread(socket).start();
			new RecevidThread(socket).start();
		}
	}
}



5,测试步骤:
  先打开服务端
  再打开客户端
  即可进行即时通讯。

分享到:
评论

相关推荐

    java写的聊天室程序

    这个“类QQ聊天程序”是一个简单的实例,展示了如何利用Java实现即时通讯功能。下面我们将深入探讨其核心知识点。 1. **网络编程基础**: Java中的`Socket`类和`ServerSocket`类是进行网络通信的基础。`...

    qq应用程序,java的gui编程实践

    QQ应用程序是许多用户熟悉的即时通讯工具,而这个项目则是使用Java的GUI(图形用户界面)编程技术实现的一个简化版本。Java GUI编程主要依赖于Swing库,它为开发者提供了丰富的组件和工具来创建桌面应用程序的界面。...

    JAVA聊天室毕业设计

    - 为用户提供一个实时交流的平台。 - 促进信息共享和技术交流。 - 满足不同用户群体的需求。 #### 二、系统概述 - **系统架构**:本聊天室系统基于Java语言开发,利用Java强大的跨平台特性实现多终端兼容性。 -...

    5.0S1项目MyQQ

    在这个项目中,学员们将接触到一个名为"MyQQ"的模拟聊天应用的开发,这是一款类似于QQ的即时通讯软件。通过参与这个项目,学员可以学习到实际开发中的关键技术和流程,从而对软件工程有更深入的理解。 在描述中提到...

    基于TCP协议网络聊天程序 计算机网络课设

    其特色在于利用Java的Socket实现TCP通信,多线程技术保证了服务器的高效处理,但不足之处可能包括安全性还有待加强,以及用户界面的优化空间。 在整个设计过程中,不仅锻炼了TCP/IP协议的理解和应用能力,也提高了...

Global site tag (gtag.js) - Google Analytics