`

java tcp套接字编程

阅读更多
客户端

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

public class MultiJabberClient {
	static final int MAX_THREADS = 10;

	public void start() throws UnknownHostException, InterruptedException {
		InetAddress addr = InetAddress.getByName("bupt"); // 主机名
		while (true) {
			if (JabberClientThread.getThreadCount() < MAX_THREADS)
				new JabberClientThread(addr); // addr是服务器的地址

		}
	}

	public static void main(String args[]) throws UnknownHostException,
			InterruptedException {
		new MultiJabberClient().start();
	}
}

class JabberClientThread extends Thread {
	private static int counter = 0;
	private static int threadcount = 0;
	private int id = counter++;

	private Socket socket;
	private BufferedReader in;
	private PrintWriter out;

	public JabberClientThread(InetAddress addr) {
		System.out.println("Making Client " + id);
		threadcount++;

		try {
			socket = new Socket(addr, MultiJabberServer.PORT);
		} catch (IOException e) {

			e.printStackTrace();
		}
		try {
			in = new BufferedReader(new InputStreamReader(socket
					.getInputStream()));
			out = new PrintWriter(socket.getOutputStream(), true);

			start();
		} catch (IOException e) {
			e.printStackTrace();

			try {
				socket.close();
			} catch (IOException e1) {

				e1.printStackTrace();
			}
		}
	}

	public void run() {
		try {

			out.println("hello");
			out.println("bye");
			String str = in.readLine();
			System.out.println(str);
			// }

			out.println("END");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			System.out.println("Client " + id + " closing...");
			try {
				socket.close();
			} catch (IOException e) {

				e.printStackTrace();
			}
			threadcount--;
		}
	}

	public static int getThreadCount() {
		return threadcount;
	}
}


服务器端

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class MultiJabberServer {
	public static final int PORT = 8080; //端口可以任意指定大于1024的端口号
	
	public void start() throws IOException{
		ServerSocket s = new ServerSocket(PORT);
		System.out.println("Server started.");
		try{
			while(true){
				final Socket socket = s.accept();//阻塞,直到建立一个连接,通常,阻塞是由循环产生的。
				try{
					new ServerOneJabber(socket);          //监听到一个端口,就新建一个线程进行执行
				}
				catch(Exception e){
					socket.close();
				}
			}
		}
		finally{
			s.close();
		}
	}
	
	public static void main(String args[]) throws IOException{
		new MultiJabberServer().start();
	}

}

class ServerOneJabber extends Thread{
	private Socket socket;
	private BufferedReader in;
	private PrintWriter out;
	
	public ServerOneJabber(Socket s) throws IOException{
		socket = s;
		in = new BufferedReader(
				new InputStreamReader(socket.getInputStream()));  //负责读取来自客户端的请求
		out = new PrintWriter(socket.getOutputStream(), true);  //
用来向客户端会送响应的
		start();
	}

	public void run() {
		System.out.println(socket.getInetAddress()+":"+socket.getPort());
		try{
			while(true){
				String str = in.readLine();       //从客户端读取的字符串
							
				if(str.equals("END"))
					break;
				System.out.println("Echoing: " + str);
				out.println(str);
			}			
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		finally{
			System.out.println("closing...");
			try {
				socket.close();
			} catch (IOException e) {
				
				e.printStackTrace();
			}
		}
	}
}
分享到:
评论

相关推荐

    Socket套接字—Java套接字编程

    在Java中,Socket和ServerSocket类提供了套接字编程的基本功能。本文将深入探讨Java套接字编程的相关知识点,包括Socket和ServerSocket的使用、数据传输、异常处理以及实际应用中的常见问题。 1. **Socket类**:...

    Java 套接字编程Java 套接字编程

    ### Java套接字编程详解 #### 一、引言 随着互联网技术的不断发展与普及,网络编程成为现代软件开发中不可或缺的一部分。Java作为一种广泛应用的编程语言,提供了丰富的API支持网络编程,尤其是对于套接字(Socket)...

    基于Java的Socket套接字编程 源代码

    Java的Socket套接字编程是网络通信中的基础技术,它提供了两台计算机间低级别的连接。在Java中,Socket类和ServerSocket类是实现客户端-服务器通信的核心组件。本资源包含的是基于Java的Socket套接字编程的源代码...

    socket 套接字 Java 套接字 编程

    Java套接字编程是网络通信的核心技术之一,主要用于实现客户端与服务器之间的数据交换。本文将深入探讨Java中的Socket编程,包括基本概念、工作原理、创建和使用Socket的过程,以及常见问题和解决策略。 1. 基本...

    java套接字编程笔记

    1. **TCP/IP基础知识**:套接字编程基于TCP/IP协议栈,TCP是一种面向连接的、可靠的传输层协议,而IP则负责在网络中路由数据包。理解这两个协议的工作原理对于进行套接字编程至关重要。 2. **ServerSocket类**:在...

    Java套接字编程

    ### Java套接字编程详解 #### 一、Java网络编程概览 Java作为一种全面支持网络功能的编程语言,其强大的网络编程能力主要归功于它的一系列网络API,特别是位于`java.net`和`javax.net`包中的API。这些API为开发者...

    java套接字编程java套接字编程.doc

    "Java套接字编程详解" Java套接字编程是Java开发网络软件的核心技术之一,利用Java提供的强大网络API,可以轻松地开发网络通信软件。在这篇文章中,我们将详细介绍套接字(Socket)的概念,并通过实例说明如何使用...

    TCP套接字, 利用tcp的方式上传文件

    TCP套接字是计算机网络通信中的基础组件,尤其在文件传输方面扮演着重要角色。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,而套接字(Socket)是TCP/IP协议族提供...

    Java套接字网络编程详解.pdf

    Java套接字网络编程是一种强大的技术,用于开发基于TCP/IP网络的Java程序。Java的这种力量来源于他独有的用于网络的API,这些API是一系列的类和接口,均位于包java.net和javax.net中。 套接字(Socket)是Java套接...

    Java Socket套接字

    Java Socket套接字是Java网络编程中的核心组件,它提供了应用程序之间进行低级通信的机制。Socket基于TCP/IP协议,允许两台计算机通过网络进行双向通信。本篇文章将深入探讨Java Socket的基础知识,包括其原理、创建...

    基于Java语言的流式套接字编程探析.pdf

    本文主要探讨了基于Java语言的流式套接字编程,首先对套接字编程进行了介绍,接着分析了套接字编程所需的类,并提出了单服务器与多客户通信的设计思路,最后通过示例演示了程序,并提出了改进意见。 1. 套接字及TCP...

    JavaTCP-Socket.zip_JAVA socket编程_java socket _socket 聊天

    Java TCP套接字编程是网络通信中的核心技术,主要用于两台计算机之间建立可靠的数据传输通道。在Java中,Socket API提供了一种标准的方式来实现客户端-服务器应用程序。本篇将深入探讨Java Socket编程及其在构建聊天...

    Socket套接字—Java套接字编程(上1).rar_socket_套接字_套接字 Java

    Java套接字编程是网络通信的核心技术之一,主要用于实现客户端与服务器端的双向通信。"Socket套接字—Java套接字编程(上1)"这个资料包可能包含了关于Java套接字的基础概念、创建和使用过程,以及相关实例。下面我们...

    java TCP/IP socket 编程(原书第2版)pdf+源码

    ServerSocket用于创建服务器端的监听套接字,等待客户端的连接请求。一旦有连接请求,ServerSocket会返回一个新的Socket实例,代表与客户端建立的连接。Socket类则用于创建客户端的通信套接字,它可以主动连接到...

    简单的套接字编程,讲的很易懂

    ### 套接字编程基础知识点详解 #### 1.1 什么是套接字 套接字(Socket),作为同一台主机内部应用层与传输层之间的接口,扮演着应用程序和网络之间的桥梁角色,即应用程序接口(API)。它允许应用程序通过网络进行...

    Java TCP_IP Socket编程源代码书籍以及附带源码

    8. **高级主题**:包括SSL/TLS安全套接字、广播与多播、套接字选择器等,这些都是在网络编程中可能遇到的复杂场景。 附带的源代码提供了丰富的示例,帮助读者更好地理解和实践书中的理论知识。源码涵盖各种Socket...

    Java TCP/IP Socket编程

    `Java+TCPIP+Socket编程(中文版).pdf`这个文件很可能包含了详细的教程和示例代码,可以帮助深入理解Java Socket编程的各种细节,包括如何设置套接字选项、处理多线程并发连接、使用NIO(非阻塞I/O)优化性能等高级...

    Java TCP-IP Socket编程-卡尔弗特.pdf

    本资料“Java TCP-IP Socket编程-卡尔弗特.pdf”旨在深入探讨如何利用Java语言进行TCP/IP套接字编程,构建稳定、高效的数据传输通道。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,而...

    Java Socket套接字编程文集.chm

    Java Socket套接字编程是Java网络编程中的核心部分,它提供了低级别的、进程间通信(IPC)的基础。在本文集中,我们深入探讨了Socket编程的各种概念、原理以及实践技巧。 一、Socket概述 Socket,也被称为套接字,...

    3_tcp.rar_TCP 套接字_TCP服务_linux聊天TCP

    "3_tcp.rar"这个压缩包文件包含了关于TCP套接字、TCP服务以及在Linux环境下实现聊天应用的相关资料,让我们深入探讨一下这些知识点。 首先,TCP套接字是实现TCP通信的基础。套接字(Socket)可以看作是两台计算机...

Global site tag (gtag.js) - Google Analytics