`
wlh269
  • 浏览: 457876 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Socket高级编程 多客户端

    博客分类:
  • J2SE
阅读更多
客户端:

package com.wlh.test;

import java.io.*;
import java.net.*;
public class talkclient
{
	public static void main(String args[])
	{
		try
		{
			Socket socket = new Socket("192.168.13.123",9999);
			BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
			PrintWriter os = new PrintWriter(socket.getOutputStream());
			BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String readline;
			
			while (!"bye".equals(readline=sin.readLine()))	{
				//==============写服务端==================//
				os.println(readline);
				os.flush();
				
				//==============读服务端==================//
				System.out.println("服务端反馈:"+is.readLine());
			}
			
			os.close();
			is.close();
			socket.close();
		}catch(Exception e)
		{
			System.out.println("Error" + e);
		}
	}
}
							


服务端:负责接收多个客户端的连接 ,然后交给多线程去处理
package com.wlh.test;

import java.io.*;
import java.net.*;
//引入了无关的类
import java.applet.Applet;

public class talkserver {
	static int clientnum = 0; // 静态成员变量,记录当前客户的个数
	
	public static void main(String args[]) {
		ServerSocket server = null;
		try {
			server = new ServerSocket(9999);
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		
	   while(true){
		try {
			
			Socket socket = server.accept();
			System.out.println("一个客户端连上来了....");
			ServerThread thread=new ServerThread(socket);
			//thread.start();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	   }
	}
}



多线程程序:


package com.wlh.test;

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

/**
 * 服务器端逻辑线程
 */
public class ServerThread extends Thread {
	Socket socket;
	BufferedReader br=null;
	PrintWriter os=null;
	public ServerThread(Socket socket) {
		this.socket = socket;
		start(); //启动线程
	}
	
	public void run() {
		BufferedReader is=null;	
		PrintWriter os=null;
		
		try {
			boolean flag=true;
			//ServerSocket server = null;
			//Socket socket = null;
			//ServerSocket server = new ServerSocket(9999);
			System.out.println("server listen on port 9999...");
			//socket = server.accept();
			is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		    os = new PrintWriter(socket.getOutputStream());
		
		   while(flag){
			 System.out.println("-------------------");
			   //多线程
			  //new ServerThread(socket, clientnum).start();
			  
			
			     //标准输入端读取一行
			     BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
				String str;
				String reply;
				while(!"".equals(str=is.readLine())){
					System.out.println(".....start...........");  					
				  	System.out.println(str); //每写一行,就等着从客户端读进一行,
				  	
				  	//====向客户端反馈读到的信息=====//
				  	os.println("服务端已经收到:"+str);
				  	os.flush();
				  	
				  	//=======从控制台读取信息==========//
				  	//reply=sin.readLine(); 
					//os.println("服务端 说:"+reply); //写到客户端
					//os.flush();
					
					System.out.println("......end.........");
				}

				
				System.out.println("out of while...");  
				//String line=sin.readLine();
				os.println("server AAAAAAAAAAAAA"); //写到客户端
				os.flush();
			}
		
		//****流如果关闭,socket也将会关闭,所以如果想在一个socket连接之内通讯*****//,
	    //***则应该在while之外关闭socket****//
		
		//server.close();
		
		} catch (Exception e) {
			System.out.println("Error" + e);
		}finally{
			try {
				is.close();
				os.close();
				socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
	
	
	}

	/**

	 * 关闭流和连接

	 */
	private void close() {
		try {
			//关闭流和连接
			os.close();
			br.close();
			socket.close();
		} catch (Exception e) {
		}
	}

	
}
分享到:
评论

相关推荐

    Socket高级编程实例

    Socket高级编程是网络编程的重要组成部分,它涉及到计算机网络通信的核心技术。在本实例中,我们将深入探讨如何利用Socket进行高效、稳定的数据交换。Socket编程主要应用于客户端与服务器之间的交互,如网页浏览、...

    vc socket tcp 多线程客户端--服务器结构的例子.visual c++

    本文将深入探讨基于Visual C++的TCP多线程客户端-服务器结构,并以"vc socket tcp 多线程客户端--服务器结构的例子"为例进行解析。这个例子包含了一个名为"RawSocketServerExample"的文件,很可能是实现此架构的源...

    SOCKET编程之TCP客户端

    深入研究这个代码,可以学习到更多关于TCP客户端编程的细节,如错误处理、数据编码解码、多线程并发处理等高级技巧。 总的来说,SOCKET编程之TCP客户端是网络编程的基础,通过学习和实践,开发者能够构建起与服务器...

    SOCKET 网络编程 计算机网络 作业 客户端 服务器端 client svever

    在计算机网络领域,Socket编程是一种基础且至关重要的技术,它为客户端和服务器端的应用程序提供了进行数据通信的接口。Socket在网络层面上实现了进程间的通信,是互联网应用的基础,广泛应用于各种服务,如HTTP、...

    简单的socket 服务器/客户端编程

    Socket编程是计算机网络通信中的基础技术,主要用于实现进程间的网络通信。...在深入学习中,你还可以了解UDP协议、SSL/TLS加密通信、多线程/异步编程等高级主题。希望这个入门教程能帮助你开启Socket编程之旅!

    C#+SOCKET实例(含有客户端和服务器端)源码

    总的来说,"C#+SOCKET实例(含有客户端和服务器端)源码"为我们提供了一个学习网络编程的实用案例,通过分析和运行这两个项目,开发者可以深入理解C#中的Socket通信,以及如何构建简单的客户端-服务器应用。...

    python socket 实现服务器与客户端多线程连接

    在Python编程中,Socket库是用于网络通信的基本工具,它允许程序作为服务器或客户端通过网络交换数据。在本文中,我们将深入探讨如何使用Python的socketserver模块实现服务器与多个客户端的多线程连接。 首先,我们...

    Socket网络编程1

    Socket网络编程是计算机科学中一个重要的领域,主要涉及在不同设备间通过网络进行通信的技术。...掌握好Socket编程,不仅可以提升开发能力,也是向网络工程师、系统架构师等高级职位迈进的重要一步。

    socket网络编程(源代码)

    Socket网络编程是计算机科学中用于实现网络通信的一种接口,它允许程序通过Internet协议进行数据交换。...同时,掌握Socket编程也能为学习更高级的网络编程概念,如Web服务、分布式系统等奠定基础。

    C# socket编程游戏(1服务器,多客户端)

    在本文中,我们将深入探讨如何使用C#进行Socket编程,特别是在构建一个简单的游戏环境中,涉及到一个服务器和多个客户端的交互。Socket编程是网络通信的基础,它允许程序通过网络发送和接收数据。C#语言提供了丰富的...

    tcp[1].udp高级编程

    本文将深入探讨"TCP[1].UDP高级编程"这一主题,旨在帮助开发者掌握这两种传输层协议的高级用法,以及如何在实际项目中利用socket进行编程。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的...

    C# Socket 客户端服务端封装 支持多连接处理 Tasks多线程 队列处理 大数据拆分包处理

    综上所述,本项目提供了一个高级的C# Socket通信框架,它优化了网络通信的各个环节,包括客户端和服务端的封装、多连接管理、多线程处理、队列策略以及大数据传输的拆分和重组。这样的框架对于开发高性能、高并发的...

    Java socket网络编程的基础示例

    为了提高效率和安全性,开发者还需要关注Socket编程中的超时设置、缓冲区大小、错误重试策略以及安全套接层(SSL/TLS)加密等高级特性。在处理大量并发连接时,还可以考虑使用NIO(Non-blocking I/O)或者Netty这样...

    socket编程就是服务器辨别客户端的一个插口

    在实际开发中,为了简化Socket编程,可以使用第三方库如Netty、Grizzly等,它们提供了更高级的API和功能,如NIO(非阻塞I/O)、线程池管理等,有助于提高性能和可维护性。 总的来说,Socket编程是构建网络应用程序...

    c# tcpsocket 原生代码编写 客户端和服务端程序

    在实际开发中,为了提高代码的可读性和复用性,通常会封装成类库或服务,例如创建Server类和Client类,将Socket操作封装在类的方法中,同时考虑异常处理、并发连接支持等高级特性。 总的来说,掌握C#中的TCP Socket...

    socket编程(中间件) linux服务器 windows客户端 课程设计

    在本“Socket编程(中间件)Linux服务器Windows客户端课程设计”中,我们将深入探讨如何构建一个跨平台的网络应用,即在Linux服务器上运行服务端程序,而Windows客户端则负责与其交互。 **一、Socket编程基础** ...

    第21章Linux网络通信高级编程Socket.pdf

    【Linux网络通信高级编程Socket】章节主要探讨了在Linux环境下如何进行高级的网络通信编程,特别是使用Socket进行TCP/IP通信。Socket是网络编程的核心概念,它代表了一个通信端点,结合IP地址和端口号,用于标识网络...

    实验一_SOCKET编程实验

    首先,理解并实现服务器端的Socket编程,然后编写客户端代码,测试连接与通信功能。 **9. 遇到的问题与解决方案** 常见问题可能包括连接失败、数据传输错误等。检查网络连接、端口号是否冲突、Socket操作顺序是否...

    Socket客户端.zip

    Socket客户端在IT行业中是网络编程的一个重要组成部分,主要用于实现不同计算机之间的通信。Socket,也称为套接字,是操作系统提供的一种进程间通信机制,尤其在网络环境中,它为应用程序提供了发送和接收数据的能力...

    java socket 多客户端通讯

    Java Socket 是一种基于TCP/IP协议的应用层编程接口,用于实现客户端和服务器之间的通信。在Java中,Socket提供了双向通信通道,允许数据在网络中双向传输。本文将深入探讨如何使用Java Socket实现多客户端与服务器...

Global site tag (gtag.js) - Google Analytics