本篇文章给大家带来的内容是关于socket编程的实现过程,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1.socket 服务器搭建
实例化socket服务器,循环获取请求package com.orange.util;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* socket服务器
*
* @author Chengjq
*
*/
public class SocketServer {
public static int count = 0;
public static void main(String[] args) {
// TODO 自动生成的方法存根
int port = 4404;
// 首先直接创建serversocket
ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(port);
System.out.println("启动socketServer成功,等待客户端的连接");
while (true) {
socket = serverSocket.accept();
System.out.println("有新的客户端请求连接");
SocketThread st = new SocketThread(socket);
st.start();
ChatManager.getChatManager().add(st);
//启动定时任务,如果10s内没有进程
/*Runnable runnable = new Runnable() {
int clientNum = 0;
public void run() {
// task to run goes here
clientNum = ChatManager.getChatManager().vector.size();
System.out.println("剩余客户端数量:"+clientNum);
if(clientNum ==0 ){
System.out.println("连接超时,或者无客户端连接,关闭serverSocket");
//关闭socket
//.....
}
}
};
ScheduledExecutorService service = Executors
.newSingleThreadScheduledExecutor();
// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
service.scheduleAtFixedRate(runnable, 2, 10, TimeUnit.SECONDS); */
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
System.out.println("serverSocket已超时");
try {
socket.close();
serverSocket.close();
} catch (IOException e) {
// TODO Au