分类: 【java】2012-10-08 12:03 14539人阅读 评论(46) 收藏 举报

注:本代码版权所有!!!转载时请声明源地址:http://blog.csdn.net/nuptboyzhb/article/details/8047619

你可以学习,分享,修改,教学等。但是不得用于商业目的。目前已经发现互联网上大量与本文完全相同的文章,但是却把作者信息删除的干干净净,并且据为己有,打上某培训机构的广告!实属可恶!

最新消息:项目成品连接:http://blog.csdn.net/nuptboyzhb/article/details/8611179

(一)项目概述:
C++服务器是之前编写好的,有对应的C++客户端。因此,服务器的C++代码不能改变。主要解决的问题是:
1.如何用java类来还原服务器中的结构体
2.数据之间的转换
3.socket通信数据统一用字节数组。
(二)首先看一下服务器的代码:(360安全卫士竟然说我的代码是木马...好吧,这个服务器不就是能联网,能获取本地数据么?确实有点像木马,但绝对不是!)
/*主要功能是获得系统硬盘符号及硬盘下的目录和文件*/
[C++ code]

  1. // FileNetServer.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"
  4. #include "FileNetServer.h"
  5. #include <winsock.h>
  6. #include <windows.h>
  7. #include "SYS.H"
  8. #pragma comment(lib, "ws2_32")
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. typedef struct
  15. {
  16. int ID;
  17. BYTE lparam[BUF_LEN*2];
  18. }COMMAND;
  19. /*BOOL 4byte HICON 4byte*/
  20. typedef struct
  21. {
  22. char FileName[MAX_PATH];//260byte
  23. int FileLen;
  24. char Time[50];
  25. BOOL IsDir;
  26. BOOL Error;
  27. HICON hIcon;
  28. }FILEINFO;
  29. BOOL DeleteDirectory(char *DirName);
  30. BOOL CapScreen(LPTSTR FileName);
  31. DWORD WINAPI SLisen(LPVOID lparam);
  32. DWORD GetDriverProc(COMMAND command, SOCKET client);
  33. DWORD GetDirInfoProc(COMMAND command, SOCKET client);
  34. DWORD ExecFileProc(COMMAND command, SOCKET client);
  35. DWORD DelFileProc(COMMAND command, SOCKET client);
  36. DWORD FileInfoProc(COMMAND command, SOCKET client);
  37. DWORD CreateDirProc(COMMAND command, SOCKET client);
  38. DWORD DelDirProc(COMMAND command, SOCKET client);
  39. DWORD GetFileProc(COMMAND command, SOCKET client);
  40. DWORD PutFileProc(COMMAND command, SOCKET client);
  41. DWORD GetScreenProc(COMMAND command, SOCKET client);
  42. /////////////////////////////////////////////////////////////////////////////
  43. // The one and only application object
  44. CWinApp theApp;
  45. using namespace std;
  46. int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
  47. {
  48. WSADATA wsadata;
  49. SOCKET FileNetServer;
  50. SOCKET client;
  51. SOCKADDR_IN FileNetServeraddr;
  52. SOCKADDR_IN clientaddr;
  53. int port = 17329;
  54. WORD ver = MAKEWORD(2,2);
  55. WSAStartup(ver, &wsadata);
  56. FileNetServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  57. FileNetServeraddr.sin_family = AF_INET;
  58. FileNetServeraddr.sin_port = htons(port);
  59. FileNetServeraddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
  60. bind(FileNetServer, (SOCKADDR*)&FileNetServeraddr, sizeof(FileNetServeraddr));
  61. listen(FileNetServer, 5);
  62. int len = sizeof(clientaddr);
  63. char s_password[100];
  64. while(true)
  65. {
  66. if(client = accept(FileNetServer, (sockaddr*)&clientaddr, &len))
  67. {
  68. if(send(client, "Password", sizeof("Password"), 0) != SOCKET_ERROR)
  69. {
  70. cout<<"有客户请求连接,正在等待客户输入密码!";
  71. }
  72. ag:         if(recv(client, s_password, sizeof(s_password), 0) != SOCKET_ERROR)
  73. {
  74. if(strcmp(s_password, "123") == 0)
  75. {
  76. send(client, "OK", sizeof("OK"), 0);
  77. cout<<"CreateThread is the OK \n";
  78. CreateThread(NULL, NULL, SLisen, (LPVOID)client, NULL, NULL);
  79. }
  80. else
  81. {
  82. cout<<"有用户试图联入,但是未能输入正确密码!/n";
  83. send(client, "NOOK", sizeof("NOOK"), 0);
  84. goto ag;
  85. }
  86. }
  87. }
  88. }
  89. closesocket(FileNetServer);
  90. closesocket(client);
  91. WSACleanup();
  92. return 0;
  93. }
  94. DWORD WINAPI SLisen(LPVOID lparam)
  95. {
  96. SOCKET client = (SOCKET)lparam;
  97. COMMAND command;
  98. while(1)
  99. {
  100. memset((char*)&command, 0, sizeof(command));
  101. if(recv(client, (char*)&command, sizeof(command), 0) == SOCKET_ERROR)
  102. {
  103. cout<<"The Client Socket is Closed\n";
  104. break;
  105. }
  106. else
  107. {
  108. cout<<"The recv command is: ID="<<command.ID<<"  lparam="<<command.lparam<<endl;
  109. switch(command.ID)
  110. {
  111. case GetDriver:
  112. GetDriverProc(command, client);
  113. break;
  114. case GetDirInfo:
  115. GetDirInfoProc(command, client);
  116. break;
  117. case ExecFile:
  118. ExecFileProc(command, client);
  119. break;
  120. case DelFile:
  121. DelFileProc(command, client);
  122. break;
  123. case FileInfo:
  124. FileInfoProc(command, client);
  125. break;
  126. case CreateDir:
  127. CreateDirProc(command, client);
  128. break;
  129. case DelDir:
  130. DelDirProc(command, client);
  131. break;
  132. case GetFile:
  133. GetFileProc(command, client);
  134. break;
  135. case PutFile:
  136. PutFileProc(command, client);
  137. break;
  138. case GetScreen:
  139. GetScreenProc(command, client);
  140. break;
  141. default:
  142. cout<<"Can not recongnize the command!\n";
  143. break;
  144. }
  145. }
  146. }
  147. closesocket(client);
  148. return 0;
  149. }
  150. DWORD GetDriverProc(COMMAND command, SOCKET client)
  151. {
  152. cout<<"GetDriver is ok\n";
  153. COMMAND cmd;
  154. memset((char *)&cmd, 0, sizeof(cmd));
  155. cmd.ID = GetDriver;
  156. for(char i='A'; i<'Z'; i++)
  157. {
  158. char x[20] = {i, ':'};
  159. UINT Type = GetDriveType(x);
  160. if(Type==DRIVE_FIXED || Type==DRIVE_REMOVABLE || Type==DRIVE_CDROM)
  161. {
  162. cout<<x<<"\n";
  163. memset((char*)cmd.lparam, 0, sizeof(cmd.lparam));
  164. strcpy((char*)cmd.lparam, x);
  165. if(send(client, (char*)&cmd, sizeof(cmd), 0) == SOCKET_ERROR)
  166. {
  167. cout<<"Send Driver is Error\n";
  168. }
  169. }
  170. }
  171. return 0;
  172. }
  173. DWORD GetDirInfoProc(COMMAND command, SOCKET client)
  174. {
  175. cout<<"GetDir is Ok\n";
  176. FILEINFO fi;
  177. COMMAND cmd;
  178. memset((char*)&cmd, 0, sizeof(cmd));
  179. memset((char*)&fi, 0, sizeof(fi));
  180. strcat((char*)command.lparam, "*.*");
  181. cout<<(char*)command.lparam<<"\n";
  182. CFileFind file;
  183. BOOL bContinue = file.FindFile((char*)command.lparam);
  184. while(bContinue)
  185. {
  186. memset((char*)&cmd, 0, sizeof(cmd));
  187. memset((char*)&fi, 0, sizeof(fi));
  188. bContinue = file.FindNextFile();
  189. if(file.IsDirectory())
  190. {
  191. fi.IsDir = true;
  192. }
  193. strcpy(fi.FileName, file.GetFileName().LockBuffer());
  194. cout<<fi.FileName<<"\n";
  195. cmd.ID = GetDirInfo;
  196. memcpy((char*)&cmd.lparam, (char*)&fi, sizeof(fi));
  197. if(send(client, (char*)&cmd, sizeof(cmd), 0) == SOCKET_ERROR)
  198. {
  199. cout<<"Send Dir is Error\n";
  200. }
  201. }
  202. return 0;
  203. }
  204. DWORD ExecFileProc(COMMAND command, SOCKET client)
  205. {
  206. return 0;
  207. }
  208. DWORD DelFileProc(COMMAND command, SOCKET client)
  209. {
  210. return 0;
  211. }
  212. DWORD FileInfoProc(COMMAND command, SOCKET client)
  213. {
  214. return 0;
  215. }
  216. DWORD CreateDirProc(COMMAND command, SOCKET client)
  217. {
  218. return 0;
  219. }
  220. DWORD DelDirProc(COMMAND command, SOCKET client)
  221. {
  222. return 0;
  223. }
  224. BOOL DeleteDirectory(char *DirName)
  225. {
  226. return 0;
  227. }
  228. DWORD GetFileProc(COMMAND command, SOCKET client)
  229. {
  230. return 0;
  231. }
  232. DWORD PutFileProc(COMMAND command, SOCKET client)
  233. {
  234. return 0;
  235. }
  236. DWORD GetScreenProc(COMMAND command, SOCKET client)
  237. {
  238. return 0;
  239. }
  240. BOOL CapScreen(LPTSTR FileName)
  241. {
  242. return 0;
  243. }

(三)最主要的是客户端如何编写:
当然,编程流程和博客[http://blog.csdn.net/nuptboyzhb/article/details/8041715]是一样的。主要有一下几个类:
1.Client.java //还有main函数的类,你们都知道它是功能。

  1. /*
  2. *@author: ZhengHaibo
  3. *web:     blog.csdn.net/nuptboyzhb
  4. *mail:    zhb931706659@126.com
  5. *2012-9-23  Nanjing njupt
  6. */
  7. import java.io.IOException;
  8. import java.net.InetSocketAddress;
  9. import java.net.Socket;
  10. public class Client {
  11. NetDataTypeTransform mNetDataTypeTransform=new NetDataTypeTransform();
  12. private static final String IP="127.0.0.1";
  13. private static final int NetPort=17329;
  14. private Socket sock;
  15. public Client(){
  16. try {
  17. onCreate();
  18. } catch (IOException e) {
  19. // TODO Auto-generated catch block
  20. e.printStackTrace();
  21. }
  22. }
  23. public void onCreate() throws IOException{
  24. InetSocketAddress addr = new InetSocketAddress(IP,NetPort); //创建socket
  25. sock = new Socket();
  26. sock.connect(addr);//连接服务器
  27. byte []receive=new byte[9];
  28. sock.getInputStream().read(receive);
  29. String tempString=mNetDataTypeTransform.ByteArraytoString(receive, receive.length);
  30. System.out.println("  Server said:send your "+tempString);
  31. if(tempString.equals("Password")){
  32. System.out.println("I can send password 123\0!");
  33. }
  34. String password="123\0";//注意,别忘了‘\0’
  35. sock.getOutputStream().write(mNetDataTypeTransform.StringToByteArray(password));
  36. byte []isOk=new byte[3];
  37. sock.getInputStream().read(isOk);
  38. String okString=mNetDataTypeTransform.ByteArraytoString(isOk,isOk.length);
  39. System.out.println("  ----- is ok?--"+okString);
  40. if(okString.equals("OK")){
  41. System.out.println("new Thread begin...");
  42. NetDataCommand commd=new NetDataCommand(1,"E:\0");
  43. sock.getOutputStream().write(commd.getByteArrayData());
  44. ThreadRead mThreadRead=new ThreadRead(sock,this);
  45. mThreadRead.start();//启动监听线程。
  46. }
  47. //////////////////////////////////////////////////////////////
  48. try {
  49. Thread.sleep(30000);
  50. } catch (InterruptedException e) {
  51. // TODO Auto-generated catch block
  52. e.printStackTrace();
  53. }
  54. }
  55. public static void main(String [] args) throws InterruptedException, IOException
  56. {
  57. new Client();
  58. }
  59. public void GetDriverPro(Socket mSocket,NetDataCommand mCommand){
  60. System.out.println("command ID="+mCommand.getID()+"--"+"command Lparam="+mCommand.getLparam());
  61. NetDataCommand commd=new NetDataCommand(2,mCommand.getLparam()+"\\\0");
  62. try {
  63. mSocket.getOutputStream().write(commd.getByteArrayData());
  64. } catch (IOException e){
  65. // TODO Auto-generated catch block
  66. e.printStackTrace();
  67. }
  68. }
  69. public void GetDirInfoPro(Socket mSocket,NetDataCommand mCommand){
  70. System.out.println("command ID="+mCommand.getID()+"command Lparam="+mCommand.getLparam());
  71. }
  72. public void ExecFilePro(Socket mSocket,NetDataCommand mCommand){
  73. System.out.println("command ID="+mCommand.getID()+"command Lparam="+mCommand.getLparam());
  74. }
  75. public void DelFilePro(Socket mSocket,NetDataCommand mCommand){
  76. System.out.println("command ID="+mCommand.getID()+"command Lparam="+mCommand.getLparam());
  77. }
  78. public void FileInfoPro(Socket mSocket,NetDataCommand mCommand){
  79. System.out.println("command ID="+mCommand.getID()+"command Lparam="+mCommand.getLparam());
  80. }
  81. public void CreateDirPro(Socket mSocket,NetDataCommand mCommand){
  82. System.out.println("command ID="+mCommand.getID()+"command Lparam="+mCommand.getLparam());
  83. }
  84. public void GetFilePro(Socket mSocket,NetDataCommand mCommand){
  85. System.out.println("command ID="+mCommand.getID()+"command Lparam="+mCommand.getLparam());
  86. }
  87. public void PutFilePro(Socket mSocket,NetDataCommand mCommand){
  88. System.out.println("command ID="+mCommand.getID()+"command Lparam="+mCommand.getLparam());
  89. }
  90. public void GetScreenPro(Socket mSocket,NetDataCommand mCommand){
  91. System.out.println("command ID="+mCommand.getID()+"command Lparam="+mCommand.getLparam());
  92. }
  93. }

2.NetDataTypeTransform.java//顾名思义:数据转换的类

  1. import java.io.UnsupportedEncodingException;
  2. /*
  3. *@author: ZhengHaibo
  4. *web:     blog.csdn.net/nuptboyzhb
  5. *mail:    zhb931706659@126.com
  6. *2012-9-25  Nanjing njupt
  7. */
  8. public class NetDataTypeTransform {
  9. public static final String coding="GB2312"; //全局定义,以适应系统其他部分
  10. public NetDataTypeTransform(){
  11. }
  12. /**
  13. * 将int转为低字节在前,高字节在后的byte数组
  14. */
  15. public byte[] IntToByteArray(int n) {
  16. byte[] b = new byte[4];
  17. b[0] = (byte) (n & 0xff);
  18. b[1] = (byte) (n >> 8 & 0xff);
  19. b[2] = (byte) (n >> 16 & 0xff);
  20. b[3] = (byte) (n >> 24 & 0xff);
  21. return b;
  22. }
  23. /**
  24. * byte数组转化为int
  25. * 将低字节在前转为int,高字节在后的byte数组
  26. */
  27. public int ByteArrayToInt(byte[] bArr) {
  28. if(bArr.length!=4){
  29. return -1;
  30. }
  31. return (int) ((((bArr[3] & 0xff) << 24)
  32. | ((bArr[2] & 0xff) << 16)
  33. | ((bArr[1] & 0xff) << 8) | ((bArr[0] & 0xff) << 0)));
  34. }
  35. /**
  36. * 将byte数组转化成String,为了支持中文,转化时用GBK编码方式
  37. */
  38. public String ByteArraytoString(byte[] valArr,int maxLen) {
  39. String result=null;
  40. int index = 0;
  41. while(index < valArr.length && index < maxLen) {
  42. if(valArr[index] == 0) {
  43. break;
  44. }
  45. index++;
  46. }
  47. byte[] temp = new byte[index];
  48. System.arraycopy(valArr, 0, temp, 0, index);
  49. try {
  50. result= new String(temp,"GBK");
  51. } catch (UnsupportedEncodingException e) {
  52. e.printStackTrace();
  53. }
  54. return result;
  55. }
  56. /**
  57. * 将String转化为byte,为了支持中文,转化时用GBK编码方式
  58. */
  59. public byte[] StringToByteArray(String str){
  60. byte[] temp = null;
  61. try {
  62. temp = str.getBytes("GBK");
  63. } catch (UnsupportedEncodingException e) {
  64. // TODO Auto-generated catch block
  65. e.printStackTrace();
  66. }
  67. return temp;
  68. }
  69. }

3.NetDataCommand.java//该类就是实现与C++服务器中COMMMAND结构体对应的java类

  1. /*
  2. *@author: ZhengHaibo
  3. *web:     blog.csdn.net/nuptboyzhb
  4. *mail:    zhb931706659@126.com
  5. *2012-9-26  Nanjing njupt
  6. */
  7. public class NetDataCommand {
  8. private static final int IDLen=4;
  9. private static final int LparamLen=2048;
  10. private static final int CommandLen=2052;
  11. public byte []byteArrayData=new byte[CommandLen];
  12. private int ID;
  13. private String lparam;
  14. private NetDataTypeTransform mDataTypeTransform=new NetDataTypeTransform();;
  15. public byte[] getByteArrayData(){
  16. return byteArrayData;
  17. }
  18. public NetDataCommand(){
  19. }
  20. public NetDataCommand(int ID,String lparam) {
  21. // TODO Auto-generated constructor stub
  22. this.ID=ID;
  23. this.lparam=lparam;
  24. byte[] IDbyte = mDataTypeTransform.IntToByteArray(ID);
  25. System.arraycopy(IDbyte,0, byteArrayData, 0, IDbyte.length);
  26. byte[] Strbyte = mDataTypeTransform.StringToByteArray(lparam);
  27. System.arraycopy(Strbyte,0,byteArrayData,IDbyte.length,Strbyte.length);
  28. }
  29. public NetDataCommand(byte[] dataArray){
  30. int id=1;
  31. String lpString="";
  32. System.arraycopy(dataArray,0, byteArrayData,0,CommandLen);
  33. byte[] forIntID = new byte[IDLen];
  34. System.arraycopy(dataArray,0,forIntID,0,forIntID.length);
  35. id=mDataTypeTransform.ByteArrayToInt(forIntID);
  36. byte[] StrTemp=new byte[LparamLen];
  37. System.arraycopy(dataArray,IDLen,StrTemp,0,StrTemp.length);
  38. lpString=mDataTypeTransform.ByteArraytoString(StrTemp, StrTemp.length);
  39. //lpString=StrTemp.toString();
  40. ID=id;
  41. lparam=lpString;
  42. }
  43. public int getID(){
  44. return ID;
  45. }
  46. public String getLparam(){
  47. return lparam;
  48. }
  49. public void setID(int id) {
  50. this.ID=id;
  51. }
  52. public void setLparam(String str){
  53. this.lparam=str;
  54. }
  55. }

4.ThreadRead.java//线程,用于一直接收数据。

  1. /*
  2. *@author: ZhengHaibo
  3. *web:     blog.csdn.net/nuptboyzhb
  4. *mail:    zhb931706659@126.com
  5. *2012-9-26  Nanjing njupt
  6. */
  7. import java.io.IOException;
  8. import java.lang.Thread;
  9. import java.net.Socket;
  10. public class ThreadRead extends Thread{
  11. public Socket mSocket;
  12. public Client mClient;
  13. private static final int GetDriver=0x01;
  14. private static final int GetDirInfo=0x02;
  15. private static final int ExecFile=0x03;
  16. private static final int GetFile=0x04;
  17. private static final int PutFile=0x05;
  18. private static final int DelFile=0x06;
  19. private static final int DelDir =0x07;
  20. private static final int CreateDir=0x08;
  21. private static final int FileInfo=0x09;
  22. private static final int GetScreen=0x10;
  23. private static final int CommandLen=2052;
  24. private static int TryTimes=5;
  25. private byte []byteArrayData=new byte[CommandLen];
  26. public ThreadRead(Socket lpSocket,Client mClient) {
  27. // TODO Auto-generated constructor stub
  28. this.mSocket=lpSocket;
  29. this.mClient=mClient;
  30. }
  31. public void run() {
  32. while (TryTimes>0) {
  33. while (true) {
  34. try {
  35. mSocket.getInputStream().read(byteArrayData);
  36. NetDataCommand mCommand = new NetDataCommand(byteArrayData);
  37. switch (mCommand.getID()){
  38. case GetDriver:
  39. mClient.GetDriverPro(mSocket, mCommand);
  40. break;
  41. case GetDirInfo:
  42. mClient.GetDirInfoPro(mSocket, mCommand);
  43. break;
  44. case ExecFile:
  45. mClient.ExecFilePro(mSocket, mCommand);
  46. break;
  47. case DelFile:
  48. mClient.DelFilePro(mSocket, mCommand);
  49. break;
  50. case FileInfo:
  51. mClient.FileInfoPro(mSocket, mCommand);
  52. break;
  53. case CreateDir:
  54. mClient.CreateDirPro(mSocket, mCommand);
  55. break;
  56. case DelDir:
  57. mClient.DelFilePro(mSocket, mCommand);
  58. break;
  59. case GetFile:
  60. mClient.GetFilePro(mSocket, mCommand);
  61. break;
  62. case PutFile:
  63. mClient.PutFilePro(mSocket, mCommand);
  64. break;
  65. case GetScreen:
  66. mClient.GetScreenPro(mSocket, mCommand);
  67. break;
  68. default:
  69. System.out.println("----------wrong!!!--------------");
  70. break;
  71. }
  72. } catch (IOException e) {
  73. // TODO Auto-generated catch block
  74. e.printStackTrace();
  75. TryTimes--;
  76. break;
  77. }
  78. }
  79. }
  80. }
  81. }

(四)实现结果
项目源码:http://download.csdn.net/detail/nuptboyzhb/4624574
先运行服务器,再运行java客户端代码。实验结果如下:(当然,这是我电脑下的文件夹和文件(隐私暴漏了...))
运行服务器的时候,我真的想告诉360安全卫士,这不是木马...
Eclipse的控制台:

  1. Server said:send your Password
  2. I can send password 123
  3. ----- is ok?--OK
  4. new Thread begin...
  5. command ID=1--command Lparam=C:
  6. command ID=1--command Lparam=D:
  7. command ID=1--command Lparam=E:
  8. command ID=1--command Lparam=F:
  9. command ID=1--command Lparam=G:
  10. command ID=2command Lparam=$Recycle.Bin
  11. command ID=2command Lparam=.rnd
  12. command ID=2command Lparam=360Rec
  13. command ID=2command Lparam=360SANDBOX
  14. command ID=2command Lparam=9c3e42423a202668d396d3be5e
  15. command ID=2command Lparam=autoexec.bat
  16. command ID=2command Lparam=bar.emf
  17. command ID=2command Lparam=config.sys
  18. command ID=2command Lparam=cygwin
  19. command ID=2command Lparam=Documents and Settings
  20. command ID=2command Lparam=hiberfil.sys
  21. command ID=2command Lparam=IO.SYS
  22. command ID=2command Lparam=MSDOS.SYS
  23. command ID=2command Lparam=MSOCache
  24. command ID=2command Lparam=pagefile.sys
  25. command ID=2command Lparam=PerfLogs
  26. command ID=2command Lparam=Program Files
  27. command ID=2command Lparam=ProgramData
  28. command ID=2command Lparam=Recovery
  29. command ID=2command Lparam=System Volume Information
  30. command ID=2command Lparam=Users
  31. command ID=2command Lparam=Windows
  32. command ID=2command Lparam=$RECYCLE.BIN
  33. command ID=2command Lparam=eclipse
  34. command ID=2command Lparam=HelloJNI
  35. command ID=2command Lparam=System Volume Information
  36. command ID=2command Lparam=大学部分资料
  37. command ID=2command Lparam=文件鱼龙混杂
  38. command ID=2command Lparam=照片和视频
  39. command ID=2command Lparam=研究方向
  40. command ID=2command Lparam=研究生学习
  41. command ID=2command Lparam=程序语言
  42. command ID=2command Lparam=软件安装包
  43. command ID=2command Lparam=$RECYCLE.BIN
  44. command ID=2command Lparam=360
  45. command ID=2command Lparam=360Downloads
  46. command ID=2command Lparam=360Rec
  47. command ID=2command Lparam=360云盘
  48. command ID=2command Lparam=360驱动大师目录
  49. command ID=2command Lparam=61ffd6de5ad141016097
  50. command ID=2command Lparam=android-sdk-windows
  51. command ID=2command Lparam=CSDN_ExportBlog
  52. command ID=2command Lparam=eclipse
  53. command ID=2command Lparam=EditPlus
  54. command ID=2command Lparam=Fetion2012
  55. command ID=2command Lparam=FlashFXP_4.2.4.1785
  56. command ID=2command Lparam=JDK1_6
  57. command ID=2command Lparam=kankan
  58. command ID=2command Lparam=KMPlayer
  59. command ID=2command Lparam=KSafeRecycle
  60. command ID=2command Lparam=Kugou
  61. command ID=2command Lparam=KuGouCache
  62. command ID=2command Lparam=matlab2009a
  63. command ID=2command Lparam=msdn6_0
  64. command ID=2command Lparam=MSOCache
  65. command ID=2command Lparam=MySQL Tools
  66. command ID=2command Lparam=PDF_Reader
  67. command ID=2command Lparam=PHPEclipse
  68. command ID=2command Lparam=Program Files
  69. command ID=2command Lparam=ps3
  70. command ID=2command Lparam=Python27
  71. command ID=2command Lparam=QQ
  72. command ID=2command Lparam=QQGame
  73. command ID=2command Lparam=sogou
  74. command ID=2command Lparam=System Volume Information
  75. command ID=2command Lparam=TDDOWNLOAD
  76. command ID=2command Lparam=Ubuntu
  77. command ID=2command Lparam=vc2008
  78. command ID=2command Lparam=vc6_0
  79. command ID=2command Lparam=VC98
  80. command ID=2command Lparam=Video
  81. command ID=2command Lparam=VMware
  82. command ID=2command Lparam=WAMP5
  83. command ID=2command Lparam=WindowsManagerTools
  84. command ID=2command Lparam=youku
  85. command ID=2command Lparam=光影看看
  86. command ID=2command Lparam=快捷方式
  87. command ID=2command Lparam=有道
  88. command ID=2command Lparam=迅雷7

服务器的显示:

 
 

C++服务器与java进行socket通信案例的更多相关文章

  1. Flex通信-与Java实现Socket通信实例

    Flex通信-与Java实现Socket通信实例  转自:http://blessht.iteye.com/blog/1136888 博客分类: Flex 环境准备 [服务器端] JDK1.6,“ja ...

  2. java的socket通信

    本文讲解如何用java实现网络通信,是一个非常简单的例子,我比较喜欢能够立马看到结果,所以先上代码再讲解具体细节. 服务端: import java.io.BufferedReader; import ...

  3. Java的Socket通信----通过 Socket 实现 TCP 编程之多线程demo(2)

    JAVA Socket简介 所谓socket 通常也称作”套接字“,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过”套接字”向网络发出请求或者应答网络请求. import java.io ...

  4. Java:Socket通信

    Socket通常也称作"套接字".用于描写叙述IP地址和port,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ServerS ...

  5. Java的Socket通信简单实例

    服务端 package testlxd; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...

  6. linux高性能服务器编程 (四) --TCP/IP通信案例

    第四章 TCP/IP通信案例 HTTP代理服务器的大致工作原理        在HTTP通信链上,客户端和服务器之间通常存在某些中转代理服务器.它们提供对目标资源的中转访问.一个HTTP请求可能被多个 ...

  7. java的Socket通信例子及关于java.net.SocketException: Socket is closed错误

    今天写socket数据相互通信的时候,碰到一个及其蛋疼的错误.单向传输数据的时候server与client是没有问题的,但是两个都有输入输出操作的时候就出现了这个问题 java.net.SocketE ...

  8. Java实现Socket通信

    一对一通信: 服务器端: public class ServerDemo { public static void main(String[] args) { ServerSocket serverS ...

  9. java NIO socket 通信实例

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhuyijian135757/article/details/37672151 java Nio 通 ...

随机推荐

  1. java实现文字转语音功能(仅Windows)

    一.pom.xml引入jar包依赖 <!-- https://mvnrepository.com/artifact/com.jacob/jacob 文字转语音 --> <depend ...

  2. [todo0211]c语言指针,结构体的疑问

    #include <stdio.h> #include <mm_malloc.h> struct ListNode { int val; struct ListNode *ne ...

  3. techiediaries网站的Laravel 6系列教程

    Laravel 6 Tutorial & New Features - Build a CRM [PART 1] Laravel 6 REST API CRUD Tutorial - Buil ...

  4. vs2013设置不生成.sdf和ipch文件

    转载:https://blog.csdn.net/sinat_23338865/article/details/53393760 使用VS2013建立解决方案时,会生成SolutionName.sdf ...

  5. 【SSM 项目】实战总结

           项目源代码

  6. [排错] SpringBoot 警告 Could not find acceptable representation

    环境 Java 1.8 SpringBoot 2.1.9 Java 接口代码 @ResponseBody @RequestMapping(value = "cloud", meth ...

  7. uniGUI之UniSyntaxEdit(24)

    UniSyntaxEdit1语法高亮显示控件,主要属性Language,它是  多行 1]Language 语言 2]执行 FDquery1.Open(UniSyntaxEdit1.Lines.Tex ...

  8. 「快学springboot」集成Spring Security实现鉴权功能

    Spring Security介绍 Spring Security是Spring全家桶中的处理身份和权限问题的一员.Spring Security可以根据使用者的需要定制相关的角色身份和身份所具有的权 ...

  9. selenium+chrome options

    selenium+chrome options 环境:selenium chrome 1.      selenium + chrome参数配置 1.1.    启动 from selenium im ...

  10. PAT T1014 Circles of Friends

    大水题,dfs判连通块的数量,bfs每个点找朋友圈的最大直径~ #include<bits/stdc++.h> using namespace std; ; vector<int&g ...