`

多线程+socket实现简单server和client操作唯一文本

    博客分类:
  • io
阅读更多
package server;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class MarsServer extends Thread {
	public static final int PORT = 8765;
	public static final String book = "autobiography.txt";
	private Socket socket;
	private BufferedReader in;
	private PrintWriter out;
	private static PrintWriter fileOut;

	public MarsServer(Socket s) throws IOException {
		socket = s;
		InputStream socketInput = socket.getInputStream();
		InputStreamReader socketReader = new InputStreamReader(socketInput);
		in = new BufferedReader(socketReader);

		OutputStream socketOutput = socket.getOutputStream();
		OutputStreamWriter socketWriter = new OutputStreamWriter(socketOutput);
		BufferedWriter bufferedWriter = new BufferedWriter(socketWriter);
		out = new PrintWriter(bufferedWriter, true);

		start();
	}

	public void run() {
		while (true) {
			try {
				String str = in.readLine();
				if (str.equals("q"))
					break;
					fileOut.println(str);
				out.println("server send:" + str);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		System.out.println("closing socket...");
		
		try {
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws IOException {
		ServerSocket s = new ServerSocket(PORT);
		System.out.println("[server]");
		System.out.println("Started: " + s);
		System.out.println("Server Started");
		try {
			FileWriter fileWriter = new FileWriter(book);
			BufferedWriter bufferedFileWriter = new BufferedWriter(fileWriter);
			fileOut = new PrintWriter(bufferedFileWriter, true);
			while (true) {
				Socket socket = s.accept();
				try {
					new MarsServer(socket);
				} catch (IOException e) {
					socket.close();
				}
			}
		} finally {
			fileOut.close();
			
			System.out.println("closing ServerSocket...");
			s.close();
		}
	}
}

 

package client;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

import server.MarsServer;

public class MarsClient extends Thread {
	private Socket socket;
	private BufferedReader in;
	private PrintWriter out;
	private String id;

	public MarsClient(InetAddress addr, String id) throws IOException {
		this.id = id;
		System.out.println("Making client " + id);
		socket = new Socket(addr, MarsServer.PORT);
		in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
		start();
	}

	public void run() {
		try {
			for (int i = 0; i < 100; i++) {
				out.println("Client " + id + ": " + i);
				String str = in.readLine();
				System.out.println(str);
			}
			out.println("q");
		} catch (IOException e) {
			System.out.println(e);
		}
	}

	static final int MAX_THREADS = 2;

	public static void main(String[] args) throws IOException, InterruptedException {

		InetAddress addr = InetAddress.getByName(null);
		System.out.println("[client]");
		System.out.println("addr = " + addr);

		new MarsClient(addr, 1 + "");
		//Thread.sleep(100);
		new MarsClient(addr, 2 + "");

	}
}

 

0
0
分享到:
评论

相关推荐

    多线程与Socket联合使用案例源码

    在IT领域,多线程和Socket编程是两个关键的概念,它们在构建网络应用程序时起着至关重要的作用。这里,我们将深入探讨这两个主题以及它们在实际案例中的结合使用。 首先,让我们了解一下多线程。在Java或其他支持多...

    c++socket_server_client

    综上所述,"c++socket_server_client"项目展示了如何在Windows环境下使用C++进行socket编程,实现一个支持群聊、消息推送、文件二进制流传输和加密功能的服务器和客户端系统。对于学习网络编程和C++的开发者来说,这...

    JAVA 多线程Client\Server 聊天 serverQQ

    在这个名为"ServerQQ"的项目中,开发者利用Java的多线程特性实现了客户端(Client)与服务器端(Server)的聊天功能,模拟了类似于QQ的即时通讯体验。下面我们将深入探讨这个项目中的关键技术点。 一、Java多线程 ...

    java多线程client+server聊天程序源代码设计案例

    Java多线程Client+Server聊天程序是一个典型的网络通信应用,涉及到并发处理、Socket编程和数据交换等关键概念。在这个设计案例中,我们将深入探讨以下几个重要知识点: 1. **Java多线程**:在聊天程序中,多线程是...

    java基于socket/server的多线程聊天室程序,可以公聊和私聊。

    综上所述,本程序通过综合运用Java Socket编程、多线程技术和Swing图形界面库,成功实现了具有公聊和私聊功能的聊天室应用。这对于学习网络编程、多线程以及Java GUI开发都有着重要的参考价值。

    SOCKET多线程控制台聊天

    本文将深入探讨C++中使用`SOCKET`进行多线程控制台聊天的实现,基于提供的文件名"709Server"和"709Client",我们可以推测这是服务器端和客户端的代码。 1. **套接字基础**: 套接字(Socket)是网络通信的基本单位...

    JAVA+Socket教程

    1. **多线程处理**:如果服务器需要同时处理多个客户端连接,可以为每个新连接创建一个新的线程。 2. **异常处理**:在网络编程中,必须对各种可能的网络异常进行妥善处理,如连接中断、超时等。 3. **安全性**:...

    练习\Socket和多线程编程的聊天程序实现

    【知识点详解】 1. **Socket编程**:Socket是网络编程中的基本组件,它提供了一种在互联网中...通过上述设计,一个简单的多线程网络聊天程序可以实现多人同时在线聊天的功能,满足用户在不同地点进行实时交流的需求。

    vb---server client (socket)

    综上所述,"vb---server client (socket)"这个项目涵盖了VB中基于Socket的网络编程基础,包括服务器和客户端的建立、数据的发送与接收、错误处理以及可能涉及的多线程技术。理解这些知识点对于开发网络应用至关...

    java socket 多线程通讯示例

    Java Socket 多线程通信是网络编程中的一个重要概念,它允许两个或多个应用程序通过TCP/IP进行数据交换。在这个示例中,我们创建了一个双向通信的系统,即双工通信,这意味着数据可以在两个方向上同时传输。这样的...

    TCP/IP+socket网络编程

    【TCP/IP+Socket网络编程详解】 TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网的...在实际开发中,还需要考虑错误处理、多线程或异步处理以支持多个并发连接,以及更复杂的应用层协议的实现。

    C++builder socketclient/server网络五子棋

    聊天功能的实现相对简单,主要是通过服务器转发客户端发送的文本消息到其他所有在线的客户端。服务器端可以设置一个消息队列,将接收到的聊天消息放入队列,然后广播给所有连接的客户端。 总的来说,这个项目涵盖了...

    socket多线程

    在给定的示例代码中,展示了如何建立一个简单的基于Socket的通信程序,包括客户端(Client)和服务端(Server)两部分。这部分内容涉及到的知识点包括: 1. **客户端(Client)**: - 创建Socket对象:`Socket cs = new ...

    Socket和多线程编程的聊天程序实现.pdf

    从给定文件【标题】和【描述】中可以提炼出的知识点是关于如何使用Socket编程和多线程来实现一个聊天程序。聊天程序允许用户通过网络进行实时的文本交流,是一个常见的网络编程应用。为了实现这个功能,必须深入了解...

    java多线程实现一个控制台聊天室

    本项目采用Java语言,利用多线程技术实现了一个简单的控制台聊天室。该聊天室具备基本的客户端与服务器端交互功能,用户可以通过控制台窗口进行文字聊天交流。 #### 二、核心功能模块 1. **服务器端**:负责接受...

    java基于socket聊天室实现

    Java基于Socket实现的聊天室是一种常见的网络编程应用场景,它利用了Java的Socket类来创建客户端与服务器端的连接,...总的来说,通过Java Socket实现聊天室是一个很好的学习网络编程、多线程和并发处理的实际案例。

    Socket和多线程编程的聊天程序实现.doc

    Socket和多线程编程是实现网络聊天程序的核心技术。Socket编程是一种网络通信机制,它允许两台计算机通过Internet进行数据交换。在Java中,Socket类代表了TCP/IP协议中的一个连接,用于提供双向通信。多线程则是处理...

    android socket, include client and server

    本文将深入探讨Android中的Socket编程,包括客户端和服务器端的实现,并基于提供的文件名"SocketClient"和"socketServer"进行讲解。 首先,我们要了解什么是Socket。Socket是网络通信的一种接口,它允许两台计算机...

    java tcp多线程通信

    Java TCP多线程通信是网络编程中的一个重要概念,它结合了Java的Socket编程与多线程技术,使得多个客户端能够同时与服务器进行交互。在Java中,TCP(传输控制协议)提供了一种可靠的数据传输方式,确保数据的有序、...

    Java Socket实现简单点对点聊天软件

    综上所述,Java Socket实现的点对点聊天软件是一个涵盖了网络编程、多线程、GUI设计等多个领域的综合性项目,对于学习和实践Java网络编程具有很高的价值。通过这样的实践,开发者可以深入理解网络通信的原理,以及...

Global site tag (gtag.js) - Google Analytics