`

java 网络协议(一)Tcp多线程服务器端编程

阅读更多
1,通用服务器代码
package multiThread;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
//通用多线程服务器?????????????????
public class MTServerBase extends Thread {

	// client
	protected Socket socket;

	// Here is the thread that does the work
	// Presumably you'll override this in the subclass
	public void run() {
		try {
			String s = "I'm a test server. Goodbye";
			socket.getOutputStream().write(s.getBytes()); //发送给客户端
			
			byte[] b = new byte[40]; //读客户端
			socket.getInputStream().read(b);
			System.out.println("服务器端显示:"+new String(b));
			socket.close();
		} catch (Exception e) {
			System.out.println(e);
		}
	}
	 public static void startServer(int port, Class clobj) {
		ServerSocket ssock;
		try {
			ssock = new ServerSocket(port);
			System.out.println("Listening...");
			while (true) {
				Socket esock = null;
				try {
					esock = ssock.accept();
					
					System.out.println("connected...");
					// create new MTServerBase or subclass
					MTServerBase t = (MTServerBase) clobj.newInstance();
					t.socket = esock;
					t.start();
				} catch (Exception e) {
					try {
						esock.close();
					} catch (Exception ec) {
					}
				}
			}
		} catch (IOException e) {
		}
		// if we return something is wrong!
	}
//test main simple
	public static void main(String[] args) {
		System.out.println("Starting server on port 1234");
		MTServerBase.startServer(1234, MTServerBase.class);
	}
}

可以直接用telnet客户端测试





或者测试的客户端程序:
package multiThread;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
	public static void main(String[] args) throws UnknownHostException, IOException {
		Socket socket = new Socket("localhost",1234);
		
		InputStream is = socket.getInputStream();
		OutputStream out = socket.getOutputStream();
		
		byte[] b = new byte[40];
		is.read(b);
		String data = new String(b);
		System.out.println("客户端显示:"+data);
		out.write(("from client:"+data).getBytes()); //返回服务器
		is.close();
		socket.close();
	}
}





2,利用1所写的基类,实现一个特殊的server
package multiThread;
import java.io.*;
//使用基类组成另一个服务器的例子,将基类MTServerBase的main函数注释掉
public class UCServer extends MTServerBase {
//socket是父类中继承来的,代表客户端
	public void run() {
		try {
			InputStream is = socket.getInputStream();
			OutputStream os = socket.getOutputStream();
			while (true) {
				char c = (char) is.read();
				// end on Control+C or Control+D
				if (c == '\003' || c == '\004')
					break;
				os.write(Character.toUpperCase(c)); //为啥是返回telnet端,应该是服务器端才是啊????
			}
			socket.close();
		} catch (Exception e) {
			System.out.println(e);
		}
	}
	public static void main(String[] args) {//参数为端口号
		int n = Integer.parseInt(args[0]);
		System.out.println("Starting server on port " + n);
		startServer(n, UCServer.class);

	}
}

telnet端输入的字母,返回为大写的字母






  • 大小: 9.8 KB
  • 大小: 6.5 KB
  • 大小: 9.7 KB
  • 大小: 17.7 KB
  • 大小: 5.1 KB
  • 大小: 11.4 KB
分享到:
评论

相关推荐

    java网络编程TCP 多线程连接例子

    总的来说,这个Java网络编程TCP多线程连接例子为我们提供了一个基础的框架,展示了如何使用Java实现可靠的TCP连接,并通过多线程处理并发请求。在深入学习和实践中,我们还可以结合其他Java网络库,如NIO(非阻塞I/O...

    tcpServer_TcpServer_tcp服务器端多线程_

    在IT行业中,网络编程是不可或缺的一部分,特别是在服务器端开发中,TCP协议因其可靠性和面向连接的特性被广泛应用。本文将详细讲解如何实现一个基于TCP的服务器端,特别是多线程技术在TCP服务器中的应用。 标题...

    Java网络编程之TCP协议下—上传文件到服务器程序

    在Java网络编程中,TCP(Transmission Control Protocol)协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP提供了一种可靠的数据传输服务,确保数据的正确顺序和完整性,非常适合文件传输。本教程将...

    tcp_test.rar_java tcp 多线程_java tcp 线程_tcp 多线程_tcp线程_多线程 TCP

    本项目"tcp_test.rar"似乎是一个关于Java实现TCP多线程传输的实例,它涵盖了发送方和接收方的并发处理。 首先,让我们了解TCP多线程的概念。在单线程TCP服务器中,服务器接收到一个客户端连接后,会阻塞等待该连接...

    java ATM +tcp+多线程+oracle

    Java ATM 实现基于TCP协议与Oracle数据库的多线程应用是一个经典的计算机科学示例,它涵盖了网络编程、数据库操作和并发处理等多个核心IT知识点。在这个项目中,开发者使用Java语言来构建一个模拟自动取款机(ATM)...

    java tcp多线程通信

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

    Java网络编程 TCP协议 聊天室

    聊天室项目是学习Java网络编程和TCP协议的一个好例子,因为它涉及到多线程、异步通信和数据共享等核心概念。同时,你还可以在此基础上添加更多的功能,比如用户身份验证、私聊、文件传输等,进一步提升聊天室的实用...

    实现基于java socket方式:TCP和UDP协议的 小Demo,还实现了基于TCP协议的服务器端多线程方式监听.zip

    在这个小Demo中,我们将深入探讨如何利用Java实现这两种协议的简单应用,以及如何在TCP服务器端使用多线程监听。 首先,TCP(传输控制协议)是一种面向连接的、可靠的协议,它保证了数据的顺序和完整性。在Java中,...

    多线程和网络编程

    在实际应用中,多线程和网络编程常常结合使用,比如在服务器端,一个线程可以负责处理一个客户端的连接,多个线程则可以同时处理多个连接,提高服务的并发能力。但是,多线程并不总是最佳解决方案,有时使用异步I/O...

    tcp_per.rar_GUI TCP_TCP网络聊天_java TCP线程_tcp多线程

    服务端会创建一个线程来监听新的连接,每当有新客户端连接时,就会创建一个新的线程来处理该客户端的通信,这就是TCP多线程的应用,这样可以保证服务端能够同时处理多个客户端的请求,提高了系统的并发性。...

    Java代码写的局域网多线程TCP、Socket多人聊天室winsock.zip

    在本项目中,"Java代码写的局域网多线程TCP、Socket多人聊天室winsock.zip" 是一个基于Java实现的局域网多用户聊天应用。这个应用利用了TCP(Transmission Control Protocol)协议和Socket编程,同时采用了多线程...

    java多线程tcp查询

    在Java编程语言中,多线程TCP查询是网络编程中的一个重要概念,主要涉及如何通过TCP协议在多个线程中处理客户端请求。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,...

    java多线程和网络编程结合

    在这个特定的项目中,开发者利用Java的多线程特性以及Socket编程来实现一个网络服务,该服务每十分钟会执行一次任务。下面我们将详细探讨这两个主题。 首先,Java中的多线程允许程序同时执行多个任务,提高资源利用...

    java实现TCP多客户端与服务器端的通信

    本篇文章将聚焦于如何使用Java来实现多客户端与服务器端的TCP通信。 首先,我们需要理解TCP通信的基本原理。TCP提供了一种点对点的、全双工的数据通信方式,通过三次握手建立连接,然后进行数据传输,最后通过四次...

    TCP.rar_java Tcp _tcp java_tcp 多线程_tcp多线程

    创建多线程TCP服务器时,我们需要创建一个服务器端的主线程,该线程监听客户端的连接。当有新的连接请求到来时,主线程不直接处理数据,而是创建一个新的线程来处理这个连接,这样就可以同时处理多个客户端的请求,...

    java下用多线程实现tcp网络连接

    在Java编程环境中,TCP(传输控制协议)网络连接的实现通常涉及到服务器端(Server)和客户端(Client)的通信。由于TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,因此在处理并发连接时,多线程技术就...

    Java网络编程案例教程习题参考答案 .pdf

    Java网络编程案例教程习题参考答案涵盖了Java网络编程的基础知识点,包括Socket编程、TCP/IP协议、Java Socket类、ServerSocket类、Java网络编程模型、网络编程常见问题、多线程编程、并发编程、Socket选项、网络...

    能注册的TCP多线程聊天室

    【标题】"能注册的TCP多线程聊天室"是一个基于TCP/IP协议的网络通信程序,它具有用户注册功能,并且能够将用户信息保存到XML配置文件中。在这个系统中,多线程技术被用于提高服务性能和并发处理能力。 在TCP/IP通信...

    Java版聊天程序(UDP TCP 多线程)

    这个项目是一个基于Java编程语言实现的聊天程序,它涵盖了网络通信中的两种主要协议——用户数据报协议(UDP)和传输控制协议(TCP),同时利用了多线程技术来提高程序的并发处理能力。在Java中,网络通信主要依赖于...

    java快递柜多线程+网络编程

    该项目提供了一个很好的学习平台,可以深入理解Java多线程和网络编程的实际应用,同时也能锻炼解决并发和网络通信问题的能力。通过对源码的分析和实践,开发者可以提升自己在这些核心领域的技术水平。

Global site tag (gtag.js) - Google Analytics