`

Socket(2)--基于线程实现

 
阅读更多
代码例子:
package com.test;

import java.net.ServerSocket;
import java.net.Socket;
/**
 * 服务器端
 * @author yale
 *
 */
public class MainServer
{
	public static void main(String[] args) throws Exception
	{
		ServerSocket ss = new ServerSocket(5000);

		while (true)
		{
			Socket socket = ss.accept();
			// 启动读写2个线程
			new ServerInputThread(socket).start();

			new ServerOutputThread(socket).start();

		}

	}
}


package com.test;

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
/**
 * 服务器端输入流线程
 * @author yale
 *
 */
public class ServerInputThread extends Thread
{
	private Socket socket;

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

	@Override
	public void run()
	{
		try
		{
			InputStream in = socket.getInputStream();

			while (true)
			{
				byte[] buffer = new byte[1024];

				int length = 0;

				while (-1 != (length = in.read(buffer, 0, buffer.length)))
				{
					String str = new String(buffer, 0, length);
					System.out.println(str);
				}
			}

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

	}

}


package com.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
/**
 * 服务器端输出流线程
 * @author yale
 *
 */
public class ServerOutputThread extends Thread
{
	private Socket socket;

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

	@Override
	public void run()
	{
		try
		{
			OutputStream os = socket.getOutputStream();

			while (true)
			{
				BufferedReader reader = new BufferedReader(
						new InputStreamReader(System.in));
				
				String line = reader.readLine();
				
				os.write(line.getBytes());
			}

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

	}
}


package com.test;

import java.net.Socket;

/**
 * 客户端
 * @author yele
 *
 */
public class MainClient
{
	public static void main(String[] args) throws Exception
	{
		Socket socket = new Socket("127.0.0.1",5000);
		//启动客户端读写线程
		new ClientInputThread(socket).start();
		
		new ClientOutputThread(socket).start();
		
	}

}


package com.test;

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
/**
 * 客户端输入流线程
 * @author yale
 *
 */
public class ClientInputThread extends Thread
{
	private Socket socket;

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

	@Override
	public void run()
	{
		try
		{
			InputStream in = socket.getInputStream();

			while (true)
			{
				byte[] buffer = new byte[1024];

				int length = 0;

				while (-1 != (length = in.read(buffer, 0, buffer.length)))
				{
					String str = new String(buffer, 0, length);
					System.out.println(str);
				}
			}

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

	}
}


package com.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
/**
 * 客户端输出流线程
 * @author yale
 *
 */
public class ClientOutputThread extends Thread
{
	private Socket socket;

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

	@Override
	public void run()
	{
		try
		{
			OutputStream os = socket.getOutputStream();

			while (true)
			{
				BufferedReader reader = new BufferedReader(
						new InputStreamReader(System.in));
				
				String line = reader.readLine();
				
				os.write(line.getBytes());
			}

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

	}
}

分享到:
评论

相关推荐

    HPSocket.Net-develop_hpsocket.net_HPSocket_.net_socket_tcp_

    【标题】"HPSocket.Net-develop_hpsocket.net_HPSocket_.net_socket_tcp_" 提供的知识点主要集中在使用C#编程语言实现基于TCP协议的Socket通信上,并且涉及到一个名为"HPSocket.Net"的库。HPSocket.Net是针对.NET...

    Socket-TCP-IP_基于socket实现TCP通信_

    在基于Socket实现TCP通信的过程中,我们需要分别编写服务器端(Server)和客户端(Client)的代码。 服务器端的步骤如下: 1. **创建Socket**:使用`socket()`函数创建一个Socket对象,指定协议类型为TCP(SOCK_...

    编程例子-Qt多线程的socket客户端-Qtsocket服务端

    标题"编程例子-Qt多线程的socket客户端-Qtsocket服务端"揭示了这个压缩包中的内容是关于使用Qt框架进行网络编程的实例,具体涉及到了多线程的socket客户端和服务器端的实现。这通常意味着我们将深入到网络通信的基础...

    多线程实现基于TCP的Socket通信.rar

    本项目“多线程实现基于TCP的Socket通信”聚焦于在Windows环境下,如何利用C++编程语言通过多线程技术来实现高效、稳定的网络连接。下面将详细阐述涉及的知识点。 1. **TCP协议**:TCP是一种面向连接的、可靠的、...

    基于UDP的socket程序,多线程操作,windows下C语言

    ### 基于UDP的Socket程序:多线程操作,Windows下的C语言实现 #### 概述 本文将深入分析一个使用C语言在Windows环境下编写的UDP Socket程序,该程序支持多线程并发操作,实现了数据包的发送与接收功能。通过对给定...

    基于多线程和SOCKET聊天室

    综上所述,"基于多线程和SOCKET聊天室"项目展示了如何在C#环境下利用多线程和Socket技术实现一个简单的聊天室。它不仅涵盖了网络编程的核心概念,还涉及到UI设计和并发处理,对于学习和理解这些技术具有很高的实践...

    基于socket通信--聊天室VC

    总的来说,"基于Socket通信--聊天室VC"是一个学习网络编程和Socket通信的实践项目,通过它,开发者可以深入理解TCP/IP协议、Socket接口以及多线程技术在实际应用中的使用。通过分析和运行提供的源码,开发者可以提升...

    SuperSocket-master_Socket基于TCP、UDP

    - UDP应用可以利用SuperSocket的多线程处理和缓冲区管理机制,提高数据处理效率。 - 开发者可以通过定义自定义协议解析器,方便地处理UDP数据包。 **SuperSocket核心组件** 1. **Server**: 作为服务端的核心,...

    Linux下基于socket多线程并发通信的实现

    总结来说,Linux下的多线程并发通信基于socket实现,结合TCP/IP协议,能够高效地处理多个客户端的并发请求。开发者需要理解套接字的概念、类型以及编程原理,同时掌握多线程编程技巧,包括线程安全、线程池等,以...

    socket-多线程-服务端代码

    学习和理解这个多线程Socket服务端代码可以帮助开发者更好地设计和实现高性能的网络服务,例如聊天服务器、文件传输服务或在线游戏服务器。同时,这也有助于理解并发编程和网络通信的基本原理,这些都是成为一名优秀...

    Linux下用Socket和多线程实现简单聊天室

    在Linux操作系统中,使用Socket和多线程技术可以构建一个简单的聊天室应用。Socket是网络通信的基本接口,它允许不同的进程或计算机之间进行数据交换。而多线程则可以提高程序的并发处理能力,使聊天室能同时处理多...

    HP-Socket编译-Linux

    2. **install_jemalloc.txt**: Jemalloc是一款内存分配器,它优化了内存管理,尤其是在多线程环境下的性能。在大规模并发的网络应用中,使用Jemalloc可以提升系统的稳定性和效率。安装Jemalloc通常包括下载源码,...

    Java 实例 - Socket 实现多线程服务器程序源代码+详细指导教程.zip

    2. **多线程**: - 在服务器端,当多个客户端同时连接时,为了处理每个连接请求,服务器通常会创建一个新的线程来处理每个客户端的请求,这就是多线程技术的应用。Java的`Thread`类和`Runnable`接口可以用来创建和...

    超市收银管理系统---基于socket网络编程(北大青鸟第一单元)

    1. **TCP/IP协议**:socket编程基于TCP/IP协议栈,理解TCP的三次握手和四次挥手过程以及其可靠性的保证对实现稳定的数据传输至关重要。 2. **套接字创建与连接**:在Python或Java等编程语言中,需要使用特定的API...

    基于TCP/IP的Socket多线程通信(服务器和客户端)

    本主题将深入探讨基于TCP/IP的Socket如何实现多线程通信,包括服务器端和客户端的设计与实现。 1. **TCP/IP协议**:传输控制协议/互联网协议(TCP/IP)是互联网上广泛使用的通信协议标准。TCP负责数据的可靠传输,...

    VS2017实现Tcp socket多线程通信(C++)

    在本文中,我们将深入探讨如何使用Visual Studio 2017和C++来实现TCP套接字的多线程通信。TCP(传输控制协议)是一种面向连接、可靠的、基于字节流的通信协议,广泛应用于互联网上的各种服务。多线程技术则允许我们...

    基于socket多线程图片传输程序

    "基于socket多线程图片传输程序"的项目就是一个典型的实例,它利用了C++编程语言(通过Visual C++,简称VC)来实现在局域网内高效传输图片的功能。这个程序的核心在于socket通信和多线程技术,这两者都是网络编程的...

    Socket.Net-master

    Socket.Net-master 是一个基于.NET框架的Socket编程示例项目,主要涵盖了网络通信中Socket编程的基础知识和实践应用。Socket在计算机网络中起着至关重要的作用,它是进程间通信(IPC)在网络层的实现,允许应用程序...

    socket通信 多线程实现

    总结来说,"socket通信 多线程实现"涉及到的知识点包括: 1. Socket编程的基本原理和步骤。 2. C++的Berkeley Sockets API的使用。 3. 多线程编程,特别是`std::thread`库的使用。 4. 线程安全和同步机制,如互斥锁...

    基于socket和多线程的聊天程序设计与实现的群聊部分代码

    LINUX下基于socket和多线程的聊天程序设计与实现的群聊客户端关键代码

Global site tag (gtag.js) - Google Analytics