首页

Socket服务端和 android客户端 源码

java

2020-8-18

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class SckServer {
	private static final int PORT = 9999;// 端口
	private List<Socket> mList = new ArrayList<Socket>();
	private ServerSocket server = null;
	private ExecutorService mExecutorService = null; // thread pool

	public static void main(String[] args) {
		new SckServer();
	}

	public SckServer() {
		try {
			// 创建服务器端socket并绑定到一个端口上
			server = new ServerSocket(PORT);
			// 使用连接池
			mExecutorService = Executors.newCachedThreadPool();
			System.out.print("server start ...");
			Socket client = null;
			// 接字设置监听模式等待连接请求
			while (true) {
				client = server.accept();
				mList.add(client);
				// 接受连接请求后进行通信
				mExecutorService.execute(new Service(client));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	class Service implements Runnable {
		private Socket socket;
		private BufferedReader in = null;
		private String msg = "";

		public Service(Socket socket) {
			this.socket = socket;
			try {
				in = new BufferedReader(new InputStreamReader(
						socket.getInputStream()));
				msg = "user"   this.socket.getInetAddress()   "come toal:"
						  mList.size();
				this.sendmsg();
			} catch (IOException e) {
				e.printStackTrace();
			}

		}

		@Override
		public void run() {
			// TODO Auto-generated method stub
			try {
				while (true) {
					if ((msg = in.readLine()) != null) {
						if (msg.equals("exit")) {
							System.out.println("ssssssss");
							mList.remove(socket);
							in.close();
							msg = "user:"   socket.getInetAddress()
									  "exit total:"   mList.size();
							socket.close();
							this.sendmsg();
							break;
						} else {
							msg = socket.getInetAddress()   ":"   msg;
							this.sendmsg();
						}
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		public void sendmsg() {
			System.out.println(msg);
			int num = mList.size();
			for (int index = 0; index < num; index  ) {
				Socket mSocket = mList.get(index);
				PrintWriter pout = null;
				try {
					pout = new PrintWriter(new BufferedWriter(
							new OutputStreamWriter(mSocket.getOutputStream())),
							true);
					pout.println(msg);
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
资源下载此资源下载价格为3D币(VIP免费),请先
资源文件列表
socket编程/SCK/.classpath , 475
socket编程/SCK/.project , 839
socket编程/SCK/.settings/org.eclipse.jdt.core.prefs , 177
socket编程/SCK/AndroidManifest.xml , 942
socket编程/SCK/bin/AndroidManifest.xml , 942
socket编程/SCK/bin/classes/com/lyh/sck/BuildConfig.class , 331
socket编程/SCK/bin/classes/com/lyh/sck/MainActivity$1.class , 1780
socket编程/SCK/bin/classes/com/lyh/sck/MainActivity$2$1.class , 1543
socket编程/SCK/bin/classes/com/lyh/sck/MainActivity$2.class , 2009
socket编程/SCK/bin/classes/com/lyh/sck/MainActivity$3.class , 2179
socket编程/SCK/bin/classes/com/lyh/sck/MainActivity$4.class , 819
socket编程/SCK/bin/classes/com/lyh/sck/MainActivity.class , 3884
socket编程/SCK/bin/classes/com/lyh/sck/R$attr.class , 319
socket编程/SCK/bin/classes/com/lyh/sck/R$dimen.class , 440
socket编程/SCK/bin/classes/com/lyh/sck/R$drawable.class , 386
socket编程/SCK/bin/classes/com/lyh/sck/R$id.class , 470
socket编程/SCK/bin/classes/com/lyh/sck/R$layout.class , 382
socket编程/SCK/bin/classes/com/lyh/sck/R$menu.class , 367
socket编程/SCK/bin/classes/com/lyh/sck/R$string.class , 451
socket编程/SCK/bin/classes/com/lyh/sck/R$style.class , 410
socket编程/SCK/bin/classes/com/lyh/sck/R.class , 603
socket编程/SCK/bin/classes.dex , 563448
socket编程/SCK/bin/dexedLibs/android-support-v4-de7855b246fd572ebcd706d49a1375dd.jar , 189231
socket编程/SCK/bin/dexedLibs/annotations-dbd74ff1c50abcdd5ed68b0bc57e94a3.jar , 943
socket编程/SCK/bin/jarlist.cache , 120
socket编程/SCK/bin/res/drawable-hdpi/ic_launcher.png , 5964
socket编程/SCK/bin/res/drawable-mdpi/ic_launcher.png , 3112
socket编程/SCK/bin/res/drawable-xhdpi/ic_launcher.png , 9355
socket编程/SCK/bin/res/drawable-xxhdpi/ic_launcher.png , 17889
socket编程/SCK/bin/resources.ap_ , 40828
socket编程/SCK/bin/SCK.apk , 236494
socket编程/SCK/gen/com/lyh/sck/BuildConfig.java , 153
socket编程/SCK/gen/com/lyh/sck/R.java , 2212
socket编程/SCK/ic_launcher-web.png , 51394
socket编程/SCK/libs/android-support-v4.jar , 484258
socket编程/SCK/proguard-project.txt , 781
socket编程/SCK/project.properties , 563
socket编程/SCK/res/drawable-hdpi/ic_launcher.png , 7658
socket编程/SCK/res/drawable-mdpi/ic_launcher.png , 3777
socket编程/SCK/res/drawable-xhdpi/ic_launcher.png , 12516
socket编程/SCK/res/drawable-xxhdpi/ic_launcher.png , 24777
socket编程/SCK/res/layout/activity_main.xml , 815
socket编程/SCK/res/menu/main.xml , 225
socket编程/SCK/res/values/dimens.xml , 220
socket编程/SCK/res/values/strings.xml , 220
socket编程/SCK/res/values/styles.xml , 697
socket编程/SCK/res/values-sw600dp/dimens.xml , 203
socket编程/SCK/res/values-sw720dp-land/dimens.xml , 277
socket编程/SCK/src/com/lyh/sck/MainActivity.java , 3901
socket编程/SCKServer/.classpath , 301
socket编程/SCKServer/.project , 385
socket编程/SCKServer/.settings/org.eclipse.jdt.core.prefs , 598
socket编程/SCKServer/bin/SckServer$Service.class , 2885
socket编程/SCKServer/bin/SckServer.class , 1756
socket编程/SCKServer/src/SckServer.java , 2774
没有账号? 忘记密码?

社交账号快速登录