`
xkorey
  • 浏览: 153500 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

javasocket a

阅读更多
服务器端

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.TimeUnit;


public class EchoServer {

private int port = 8000;

private ServerSocket serverSocket;

private ExecutorService executorService;

private final int pool_size = 4;

private int portForShutdown = 8001;

private ServerSocket serverSocketForShutdown;

private boolean isShutdown = false;

private Thread shutdownThread = new Thread(){
public void start(){
this.setDaemon(true);
super.start();
}
public void run(){
while(!isShutdown){
Socket socketForShutdown = null;
try{
socketForShutdown = serverSocketForShutdown.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(socketForShutdown.getInputStream()));
String command = br.readLine();
if(command.equals("shutdown")){
long beginTime = System.currentTimeMillis();
socketForShutdown.getOutputStream().write("服务器正在关闭\r\n".getBytes());
isShutdown = true;
executorService.shutdown();
while(!executorService.isTerminated())
executorService.awaitTermination(30,TimeUnit.SECONDS);
serverSocket.close();
long endTime = System.currentTimeMillis();
socketForShutdown.getOutputStream().write("服务器已经关闭".getBytes());
socketForShutdown.close();
serverSocketForShutdown.close();
}else{
socketForShutdown.getOutputStream().write("错误在命令/r/n".getBytes());
socketForShutdown.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
};

public EchoServer() throws IOException{

serverSocket = new ServerSocket(port);

serverSocket.setSoTimeout(60000);

serverSocketForShutdown = new ServerSocket(portForShutdown);


executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*pool_size);

shutdownThread.start();

System.out.println("服务器启动。。。。");

}

public void service(){
while(!isShutdown){
Socket socket = null;
try{
socket = serverSocket.accept();
socket.setSoTimeout(60000);
executorService.execute(new Handler(socket));
}catch(SocketTimeoutException e){
//
}catch(RejectedExecutionException e){
try{
if(socket != null) socket.close();
}catch(IOException x){return;}
}catch(SocketException e){
if(e.getMessage().indexOf("socket closed")!= -1 ){return;}
}catch(IOException e){e.printStackTrace();}
}
}

public static void main(String a[]) throws IOException{
new EchoServer().service();
}
}

客户端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class EchoClient {

public void sendMsg() throws UnknownHostException, IOException{
boolean b = true;
while(b){
Socket s = new Socket("localhost",8000);
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);  
BufferedReader line = new BufferedReader(new InputStreamReader(System.in));  
String msg = line.readLine();
if(msg.equals("shutdown")){
b=false;
System.out.println("客户端退出。");
return ;
}
s.getOutputStream().write(msg.getBytes());
out.flush();
out.close();  
s.close();
}
}

public static void main(String[]a) throws UnknownHostException, IOException{
new EchoClient().sendMsg();
}

}
关闭服务器的客户端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;

public class AdminClient {

public static void main(String a[]){

Socket socket = null;

try{
socket = new Socket("localhost",8001);
OutputStream socketOut = socket.getOutputStream();
socketOut.write("shutdown\r\n".getBytes());
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg = null;
while((msg=br.readLine())!= null)
System.out.println(msg);

}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(socket != null)socket.close();}catch(IOException e){e.printStackTrace();}
}
}
}
分享到:
评论

相关推荐

    javaSOCKET通信聊天系统

    Java SOCKET通信聊天系统是一种基于Java编程语言实现的网络通信应用,它允许用户在局域网内进行类似QQ或飞鸽的即时通讯。该系统的核心是Java的Socket编程,这是一种网络编程接口,使得客户端和服务器之间可以建立...

    两步学会JavaSocket编程

    【Java Socket编程基础】 Java Socket编程是Java网络编程的核心部分,允许两个网络应用程序之间进行双向通信。Socket提供了低级别的、面向连接的、基于TCP/IP的通信机制,它封装了网络通信的一些细节,使得开发者...

    JAVASocket编程资料汇总

    资源名称:JAVA Socket编程资料汇总资源目录:【】Java Socket 编程模拟Ftp【】Java Socket多人在线考试系统源程序【】JavaSocket线程实现多客户的机制以及获取ip地址【】JavaSocket通讯例程【】三步学会JavaSocket...

    java socket,javasocket教程

    Java Socket是Java编程语言中用于网络通信的核心API,它提供了低级别的、面向连接的、基于TCP/IP的通信机制。在Java Socket编程中,我们可以创建服务器端(ServerSocket)来监听客户端(Socket)的连接请求,然后...

    javaSocket

    在给定的“javaSocket”压缩包中,包含了一个TCP聊天室服务器(TCPChatRoomServer)和一个对应的客户端(TCPChatRoomClient)的源代码。这些代码可以帮助我们理解如何在Java中实现基于Socket的网络通信。 首先,让...

    JAVA源码javaSocket通信实现代码

    JAVA源码javaSocket通信实现代码

    Flex与javasocket通讯.pdf

    Flex与javasocket通讯.pdf

    JSP+Flex+javaSocket+jquery+ajax聊天

    【JSP+Flex+JavaSocket+jQuery+Ajax聊天】是一个技术综合的应用实例,它整合了多种前端和后端技术,为用户提供类似QQ的聊天体验。下面将分别介绍这些技术及其在聊天应用中的作用。 **JSP(JavaServer Pages)**是...

    JAVA源码JavaSocket聊天通信演示代码

    JAVA源码JavaSocket聊天通信演示代码

    用JavaSocket编程开发聊天室

    用JavaSocket编程开发聊天室。 目的或任务:通过指导学生上机实践,对JavaSocket编程、Java多线程、Java图形用户界面进行掌握。 基本要求: 1.了解实验目的及实验原理; 2.编写程序,并附上程序代码和结果图; 3....

    javasocket

    Java Socket编程是网络编程的基础,主要用于实现客户端与服务器之间的通信。在Java中,Socket类代表一个网络连接,它允许应用程序通过TCP/IP协议进行双向通信。本篇将详细讲解如何使用Java Socket实现QQ聊天功能以及...

    javaSocket-haiyong.zip

    javaSocket-haiyong.zip是一个Java编程资源包,主要包含了与Java Socket编程相关的教程、示例代码和工具。这个资源包旨在帮助Java开发者更好地理解和掌握Socket编程技术,提高网络通信应用的开发效率。 适用人群: ...

    java_javaweb_javasocket_

    在"java_javaweb_javasocket_"这个主题中,我们将深入探讨Java的基础,Java Web开发以及Java Socket编程。 首先,让我们从Java语言结构开始。Java的核心特性包括封装、继承和多态性,这些都是面向对象编程的关键...

    1708010138-张增昊_javaweb_javaweb_javasocket_Javaweb实验_

    在这个实验集合中,我们看到“1708010138-张增昊_javaweb_javaweb_javasocket_Javaweb实验_”的标题暗示了这是一个关于JavaWeb和Java套接字(JavaSocket)的学习实践项目,可能由学生张增昊在学习过程中完成。...

    JavaSocket

    Java Socket是Java编程语言中用于网络通信的核心API,它提供了低级别的、面向连接的、双向通信的接口。在本文中,我们将深入探讨如何使用Java Socket来实现一个简单的Tomcat服务器,这涉及到网络编程的一些基本概念...

    基于javaSocket聊天室

    在这个“基于javaSocket聊天室”项目中,我们将会探讨如何利用Java的Socket API创建一个简单的聊天室,其中不仅支持文本聊天,还具备文件传输功能。 首先,让我们了解Java Socket的基本概念。Java Socket是Java提供...

    基于 JavaSocket 编程开发聊天室【100013037】

    用 JavaSocket 编程开发聊天室 用 Java 图形用户界面编写聊天室服务器端和客户端, 支持多个客户端连接到一个服务器。每个客户端能够输入账号。 可以实现群聊(聊天记录显示在所有客户端界面)。 完成好友列表在...

Global site tag (gtag.js) - Google Analytics