`

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协议的多用户聊天系统

    用j2se写的一个简单的聊天系统,写了客户端和服务器。用到了socket,流读写技术,服务器端采用了多线程等技术。基本上涵盖了j2se中所有学到的技术,非常适合学习了j2se的初学者练习使用。

    Java课程设计 基于TCP网络通信

    文件传输是应用层中的一个主要协议,负责将主机中文件从一台机器送到另一台机器。传输协议采用客户、服务器的工作模式...利用Java网络编程技术、多线程技术、数据流等技术实现客户端与服务器端的双向各种信息的传递 。

    Java TCPIP Socket编程 源码

    一个Socket实例代表了TCP连接的一个客户端,而一个ServerSocket实例代表了TCP连接的一个服务器端,一般在TCP Socket编程中,客户端有多个,而服务器端只有一个,客户端TCP向服务器端TCP发送连接请求,服务器端的...

    基于Java的多线程并发服务器的设计与应用

    :文章讨论了多线程并发服务器设计与实现所涉及到的相关知识和编程基础,并用Java实现了一个围棋和Aft-棋 多线程并发服务器。五子棋服务器提供的服务是客户端(人)和服务器端(机器)对弈;围棋服务器是为两客户对弈...

    Java网络编程(第三版)中文版.part09.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part11.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part06.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part07.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part01.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part03.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part04.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part02.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part10.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part13.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part05.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part12.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)中文版.part08.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    Java网络编程(第三版)高清中文版.part01.rar

    第一章 Java网络编程的原因 13 网络程序的功能 14 安全性 27 等等!还有更多! 29 第二章 基本网络概念 30 网络 30 网络的分层 32 IP、TCP和UDP 37 Internet 40 客户/服务器模型 46 Internet标准 47 第三...

    基于JAVA的聊天系统的设计与实现

    开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个...

    Java基础之网络编程

    Java基础之网络编程一、网络通信协议1.TCP/IP网络模型2.IP地址和端口号3.类InetAddress(存在于Java.net包中)二、UDP与TCP协议1.UDP协议2.TCP协议三、UDP通信1.DatagramPacket(数据报包)(数据封装)2....

Global site tag (gtag.js) - Google Analytics