`
shuaizai88
  • 浏览: 56269 次
  • 性别: Icon_minigender_1
  • 来自: 山东济南
社区版块
存档分类
最新评论

socket编程的小例子、socket聊天程序

 
阅读更多

刚刚参加工作不久、算是一个菜鸟吧、、下面是自己写的一个基于socket的聊天程序、多多提意见和建议、、

client、单词拼错了、大家不就用提醒了、

server、服务器端

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;

public class Server {
	public static Map map=new HashMap();
	public static Integer msgCount=0;

	public void doService() throws Exception {
		ServerSocket ss = new ServerSocket(8088);
		System.out.println("服务器已经启动.....");
		while (true) {
			Socket socket = ss.accept();
			System.out.println("一个客户端连接了...");
			try {
				new ReadThead(socket).start();
				new WriteThead(socket).start();
			} catch (Exception e) {
				// TODO: handle exception
			}
		}
	}

	public static void main(String[] args) throws Exception {
		new Server().doService();
	}
}

class ReadThead extends Thread {

	private Socket socket;

	public ReadThead(Socket socket) {
		this.socket = socket;
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub

		BufferedReader br = null;
		String ipString = null;
		try {

			synchronized (socket) {
				br = new BufferedReader(new InputStreamReader(socket
						.getInputStream()));
				ipString = socket.getLocalAddress().getHostAddress();
			}
			while (true) {
				String msg = "";

				if ((msg = br.readLine()) != null) {
					msg = ipString + "说:" + msg;
					System.out.println(msg);
					synchronized (Server.map) {
						Server.map.put(Server.msgCount++, msg);

					}
				}
			}

		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}

}

class WriteThead extends Thread {
	private Integer msgCount=0;
	private Socket socket;

	public WriteThead(Socket socket) {
		this.socket = socket;
	}

	public void run() {
		PrintWriter pw = null;
		OutputStream outputStream = null;
		try {
			synchronized (socket) {
				outputStream = socket.getOutputStream();
				pw = new PrintWriter(outputStream);

			}
			String msg = null;
			while (true) {
				synchronized (Server.map) {
					if (msgCount < Server.map.size()) {
						msg = Server.map.get(msgCount).toString();
						pw.println(msg);
						pw.flush();
						outputStream.flush();
						msgCount++;
					}
				}

			}

		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();

		}
	}
}

 client

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


public class Clinet {
	public static void main(String [] args)throws Exception{
		Socket socket=new Socket("192.168.0.125",8088);
		new ReadThread(socket).start();
		new WriteThread(socket).start();
		System.out.println("客户端已经启动");
	}

}
class ReadThread extends Thread{
	private Socket socket;
	public ReadThread(Socket socket){
		this.socket= socket;
	}
	public void run(){
		

		  BufferedReader br = null;
		  String ipString=null;
		try {
			
			synchronized (socket) {
				 br =	new BufferedReader(new InputStreamReader(socket.getInputStream()));
				ipString=socket.getLocalAddress().getHostAddress();
			}
			while(true){
				String msg="";
				if((msg=br.readLine())!=null){
					System.out.println(msg);
				}
			}
			

		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	
}

class WriteThread extends Thread{
	private Socket socket;
	public WriteThread(Socket socket){
		this.socket= socket;
	}
	public void run(){
		PrintWriter pw=null;
	    OutputStream outputStream=null;
		try {
			synchronized (socket) {
				outputStream=socket.getOutputStream();
				pw =new PrintWriter(outputStream);

				
			}
			String msg=null;
			while(true){
				Scanner scanner=new Scanner(System.in);
				msg=scanner.next();
				pw.println(msg);
				pw.flush();
				outputStream.flush();
			}

		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	
}

 

分享到:
评论

相关推荐

    Socket通讯小例子_Socket编程_Socket实例

    这是小例子是我自学Socket编程的时候写的,没有太大的扩展性,因为里面用的分隔符我一直没有想到太好的,所以用,号分割了,聊天的时候不能发,号 要么会出错,大家可以下载之后自己改,我觉得还算能用!很久没有发表...

    Socket编程简单例子

    在这个“Socket编程简单例子”中,我们将深入理解如何在Android客户端与服务器之间建立连接,发送消息并接收回应。 首先,我们需要了解Socket的基本原理。Socket是网络通信的一种接口,它为两台机器上的应用程序...

    Socket编程例子

    Socket编程是计算机网络通信中的重要概念,主要用于实现进程间的网络通信。在本示例中,我们探讨的是如何使用Socket进行程序间的交互。Socket可以被看作是两台计算机之间的通信端点,允许它们通过网络交换数据。下面...

    最基本的C# Socket编程小例子

    这个“最基本的C# Socket编程小例子”可能会包含一个简单的客户端和服务器端程序,分别实现上述步骤。通过运行这两个程序,初学者可以在本地环境中体验Socket通信的过程。 通过深入学习和实践,开发者可以进一步...

    Socket编程经典例子源码

    在实际开发中,Socket编程常用于实现聊天程序、文件传输、分布式系统等。通过这些经典的源码例子,开发者可以学习如何处理连接建立、数据打包与解析、异常处理以及多线程或多进程下的并发连接等问题。 为了深入理解...

    Socket 网络编程例子程序

    Socket网络编程是计算机科学中的一个重要领域,特别是在分布式系统和互联网应用程序中。..."Socket网络编程例子程序"是一个宝贵的教育资源,对于想要深入学习这一领域的开发者来说,它提供了实践和探索的平台。

    网上收集的多个Socket编程经典例子源码

    - "socket应用小例程.rar"和"Socket开发资料.rar"可能包含了各种Socket编程的实用案例,如文件传输、聊天室等。 - "Socket聊天室源代码.rar"提供了使用Socket实现的多人在线聊天室的源码,展示了如何实现用户注册...

    有关Java的Socket编程入门例子

    Java的Socket编程是网络编程的基础,它允许两个网络应用程序之间建立通信链接,进行数据传输。在Java中,Socket是java.net包的一部分,提供了客户端/服务器通信的基本接口。本篇文章将深入探讨Socket编程的基础知识...

    最基本的Socket编程例子

    在这个“最基本的Socket编程例子”中,我们将深入理解Socket的基本概念、工作原理以及如何在实际编程中应用。 Socket,通常被称为套接字,是操作系统提供的一个接口,用于网络上的进程间通信。在网络编程中,Socket...

    服务程序socket编程例子,包含ADO数据库操作。

    在IT行业中,服务程序Socket编程是一种常见的网络通信技术,它允许不同计算机间的程序进行数据交换。Socket编程在服务器端和客户端之间建立连接,为应用程序提供低级别的、原始的TCP/IP通信方式。本示例中,结合了...

    c++ socket编程实例(服务端及客户端)

    在IT行业中,网络编程是构建分布式系统和网络应用的基础,而C++ Socket编程则是实现这一目标的重要工具。Socket是操作系统提供的接口,允许程序通过网络进行通信。本实例提供了C++实现的服务端(server.cpp)和客户端...

    Socket编程实例

    总之,这个C#的Socket编程实例展示了如何构建一个简单的聊天应用程序,涉及了Socket的基本操作,包括连接、监听、发送和接收数据。通过理解和实践这个示例,开发者可以深入理解网络编程的基础,并为开发更复杂的网络...

    Socket编程例子_MFC

    在`Socket编程例子_MFC`这个压缩包中,可能包含了一个简单的C/S程序示例,展示了如何在MFC工程中集成Socket通信。可能包含客户端的`.cpp`和`.h`文件,以及服务器端的相应文件。代码中可能使用了`CSocket`类及其派生...

    NIO socket编程小例子 加法服务器

    总结来说,"NIO socket编程小例子 加法服务器"是一个很好的学习NIO网络编程的起点。通过这个实例,我们可以了解NIO Channel、Buffer和Selector的基本用法,以及如何构建一个简单的网络通信应用。对于任何想要提升...

    JAVA Socket编程[局域网聊天小例子]

    我们上培训时做的一个小例子,用Socket和线程编写的一个局域网聊天的小例子。需要了解线程的知识!是个控制台程序……演示需要在CMD下运行,同时运行两个就好了。关键在于学习代码~嘿嘿

    Python socket 编程的例子.rar

    附件是一个简单的 Python socket 编程的例子,包括一个服务器端和一个客户端。 附件代码在实际使用中可能需要进行错误处理和异常管理的增强,以确保程序的健壮性。此外,服务器端代码中的 while True 循环会无限期...

    Socket编程经典例子源代码

    压缩包中的源代码可能包含如简单的TCP echo服务端和客户端、文件传输、聊天室等例子,这些案例可以帮助理解Socket编程的实际应用。 总的来说,Socket编程是网络编程的基础,通过学习和实践这些经典例子,你可以...

    socket dll编程小例子

    在Windows环境下,通常使用Winsock库来实现Socket编程。Winsock库为开发者提供了丰富的API函数,如`WSAStartup`、`socket`、`bind`、`listen`、`accept`、`connect`、`send`和`recv`等,用于创建、配置和管理Socket...

Global site tag (gtag.js) - Google Analytics