关于socket (tcp)通讯当中对于连接的的客户端 服务器通过什么来进行命名

关于socket (tcp)通讯当中对于连接的的客户端 服务器通过什么来进行命名

例如服务器 10.10.10.10:8080
客户端: 127.0.0.1:68626
客户端: 127.0.0.2:51516
客户端: 127.0.0.3:32516
服务端对于连接的这个客户端如果进行编号来进行区分那个是那个?
通过客户端ip+端口生成一个md5可行吗?

1个回答

socket.getInetAddress().getHostName?

qq_36440096
大脸猫丶 这个是java的 返回的是主机名 貌似同一个主机运行不同客户端就不能区分了
大约 3 年之前 回复
Mad_Geek
Mad_Geek 不知道这个是java还是.net的 但是这个能确保每个客户端的唯一性嘛?
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于socket Tcp客户端连接超时的问题
![图片说明](https://img-ask.csdn.net/upload/201708/11/1502431558_962329.png) 简单描述一下需求:我这里需要通过socket客户端长连接一直不停的往服务器发送数据,我这边也对socket就行判断了,如果连接不上就关闭再重新连接,过几个小时就会出现连接超时的情况,大致就是这样,求大神指教。。。
MFC做的socket连接的TCP聊天程序,客户端总是连接不上服务器端,上午还好好的,
MFC做的socket连接的TCP聊天程序,客户端总是连接不上服务器端,上午还好好的,下午就一直连接不上,总是怀疑是电脑或者是VC的问题,因为有时候重新装下VC,程序就又好了,请问有懂的吗?这到底是哪里的问题》?用的VC6.0
socket TCP通讯 客户端一直循环输出welcome 求挑错
1.import java.io.*; import java.net.*; public class Server { public static final int PORT=8888; public static void main(String[] args) throws IOException{ ServerSocket ss=new ServerSocket(PORT); System.out.println(ss); try{ //记录客户端的数量 int count=0; System.out.println("***服务器即将启动,等待客户端的连接***"); //循环监听,等待客户端的连接 while(true){ Socket socket=ss.accept(); //创建新线程 ServerThread serverThread=new ServerThread(socket); //启动线程 serverThread.start(); count++; System.out.println("客户端的数量:"+count); InetAddress address=socket.getInetAddress(); System.out.println("当前客户端的IP:"+address.getHostAddress()); } }catch(IOException e){ e.printStackTrace(); }finally{ ss.close(); } } } 2.import java.io.*; import java.net.*; /* * 服务器线程处理类 */ public class ServerThread extends Thread{ //和本线程相关的socket Socket socket=null; public ServerThread(Socket socket) { this.socket = socket; } //线程执行的操作,响应客户端的请求 @Override public void run() { BufferedReader in=null; PrintWriter out=null; try{ //获取输入输出流 in=new BufferedReader( new InputStreamReader( socket.getInputStream())); String info=null; while((info=in.readLine())!=null){ System.out.println("我是服务器,客户端说"+info); } socket.shutdownInput(); out=new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream()))); out.println("welcome!"); out.flush();//调用flush()方法将缓冲输出 }catch(IOException e){ e.printStackTrace(); }finally{ try{ if(in!=null) in.close(); if(out!=null) out.close(); }catch(IOException e){ e.printStackTrace(); } } } } 3.import java.io.*; import java.net.*; /* * 客户端 */ public class Client { public static void main(String[] args)throws IOException { Socket socket=new Socket("localhost",Server.PORT); try{ BufferedReader in=new BufferedReader( new InputStreamReader( socket.getInputStream())); PrintWriter out=new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream()))); out.println("用户名:mtone;密码:123"); out.flush(); //flush()表示强制将缓冲区中的数据发送出去,不必等到缓冲区满 socket.shutdownOutput(); String info=null; info=in.readLine(); while(info!=null){ System.out.println("我是客户端,服务器说:"+info); } }catch(IOException e){ e.printStackTrace(); }finally{ socket.close(); } } } ![图片说明](https://img-ask.csdn.net/upload/201711/17/1510915294_669759.png) ![图片说明](https://img-ask.csdn.net/upload/201711/17/1510915305_978328.png)
用socket 实现Modbus TCP/IP 通讯
如题,C++编程:用socket TCP/IP 更改端口号 为502 可以实现Modbus TCP/IP 通讯吗? 1、我现在服务器端是用socket TCP/IP 创建的,客户端用的是Modsim32的从设备仿真工具。 2、基本配置 物理链路上是通的; 我要实现服务器端到客户端数据的收发,服务器端 的端口号是502; 系统是win7 32 Pro 中文版,编译环境是VC++6.0; 3、测试结果,服务器创建失败; 4、问题,我这样做有问题么
c# Socket TCP 长连接的一些问题
创建一个负责监听的Socket,每当有一个客户端连接的时候,这时候是不是需要创建一个线程来维护这个Socket连接? 换句话说是不是每一个客户端就需要一个线程来维护,如果是的话,是不是需要收、发信息都各需要一个线程,那这样一个客户端不是至少需要两个线程,若这样的思路是对的, 那假设有1000个客户端 那服务器不是至少要创建2000个线程,或许这2000个线程并没有并发运行,其中有些是挂起的 有些是运行的? 关于这个问题 已经困扰了我太久了,万望众大神,各抒己见,慷慨相助,畅所欲言。
客户端和服务端通过建立socket通信,协议是tcp/ip
有一个问题咨询:一个客户端和一个服务端通过tcp/ip连接(之间建立socket通信),在不断网的情况下,服务端关闭,客户端报警,重新开启服务器,客户端能够重新连接上服务端,但是如果拔掉网线,客户端就连接不上服务端了,但从服务端发送过来的数据还是可以读到,可是从客户端发送的数据不能到达服务端,这是为什么???
Node.js的TCP服务器和TCP客户端不能通讯的问题
这几天在做计算机网络课程设计需要为ATM机做个基于TCP的应用层协议报文。 然后我考虑用Node.js构建TCP服务器,但是在书上或网上看的构建TCP服务器 的代码基本上全部都是测试的本地连接,例如写的客户端测试代码如下 ``` var net = require('net'); var client = new net.Socket(); client.connect(3000,'127.0.0.1',function(){ console.log('connect success!!!') }); client.on('error',function(error){ console.log(error); }) ``` 确实这样没问题,可以与本机进行连接,但是如果我将ip改成同学的计算机的ip,然后他的服务端代码如下 ``` // 引入网络模块 var net = require('net'); var host = '0.0.0.0' // 创建TCP服务器 var ATMServer = net.createServer(function(socket){ console.log('someone connects'); console.log('本机ip:'+socket.localAddress); console.log('远程ip:'+socket.remoteAddress); }); // 监听客户端连接 ATMServer.listen(3000); ATMServer.on('listening',function(){ console.log('server is listening'); }); // 监听地址 var addr = ATMServer.address(); console.log(addr); ``` 此时再进行连接会没反应,过了一会儿会打印错误信息,难道Node.js的TCP服务器仅限于本地连接吗,那这样又有什么意义呢? 求大佬赐教
socket 一直处于等待连接中,实际客户端有请求连接
1.服务器端代码 Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(IPAddress.Any, 5001)); // listener.Listen(100); while (true) //死循环 { string receiverAllStr = string.Empty; Socket socket = listener.Accept(); //连接成功 2.代码执行到accept后一直等待中,端口号是正确的。 3.用socket测试小工具,可以成功的连接上客户端,并接收数据。
java的socket服务端程序传到Linux上编译运行成功,但是监听不到客户端的连接
(很急!!!没有财务值了,能帮我解决问题微信红包答谢!最好微信或者QQ交流 qq:543527507)我用了最简单的C/S程序TCP连接,在阿里云租了一个服务器,得到了一个公网IP,也把服务器socket与公网IP绑定,在自己电脑完全没问题,但是把它传到Linux远端服务器上运行,这个ServerSocket.accept()就监听不到我主机的客户端程序的连接,但是我主机的客户端能够连上公网IP的socket,但是服务器就监听不到?两个问题,第一,为什么我主机上能够连接但是服务器那边监听不到?第二,如果我主机连接的socket不是服务器的socket那我主机连接的是什么?
[新手]关于socket.io接收tcp服务器数据后转发给客户端的问题【一句话就能解决?】
如标题,接收到了tcp服务器的数据后,想转发给客户端。但是socket.io文档似乎没有这种方法。直接上代码。 服务器部分: **var express=require('express'); var app=express(); var fs =require('fs'); var net=require('net'); var http=require('http').createServer(app); var io=require('socket.io').listen(http); //nodeServer需要的变量 var nodeServer = new net.Socket(); var ExBuffer = require('./ExBuffer'); var len = 4027; var offset=4; var exBuffer = new ExBuffer().uint32Head().littleEndian(); var sbuf = new Buffer(4); //存储客户端的连接实例 var aSocket={}; app.use(express.static('public')); app.get('/',function(req,res){ res.sendfile(__dirname+'/index.html'); }); //连接到C服务器 nodeServer.connect(3102, '127.0.0.1', function() { console.log('CONNECTED TO: 127.0.0.1:3102' ); // 建立连接后立即向服务器发送数据,服务器将收到这些数据 nodeServer.write('your socket has connected'); }); var server = http.listen(8888, '127.0.0.1',function () { var host = server.address().address var port = server.address().port console.log("welcome to http://%s:%s", host, port) }); // 同客户端建立连接 io.sockets.on('connection', function (socketIO) { aSocket=socketIO; // 从客户端接收数据,然后发送至Tomcat socketIO.emit("test","your websocket has connected"); socketIO.on('fromWebClient', function (webClientData) { }); //客户端断开连接 socketIO.on('disconnect', function () { console.log('DISCONNECTED FROM CLIENT'); }); }); // 从C服务器接收数据 nodeServer.on('data', function (data) { if(data.readUInt8(0)==170){ sbuf.writeUInt32LE(len,0);//写入包长 exBuffer.put(sbuf); exBuffer.put(data); } else{ exBuffer.put(data); } console.log('nodeServer'+data.length); }); //当nodeServer收到完整的数据包时 exBuffer.on('data', function(buffer) { console.log('>> nodeServer receive data.length:'+buffer.length); //console.log(buffer); //console.log(buffer.readInt32LE(826)); var useData=byteArrayUntil.getUseJson(buffer,offset); console.log(aSocket); aSocket.emit['pushToWebClient',useData.hz]; }); // 为nodeServer添加“data”事件处理函数 // data是服务器发回的数据 // 为客户端添加“close”事件处理函数 nodeServer.on('close', function() { console.log('Connection closed'); }); //构造一个遍历函数,分别返回array或者json var byteArrayUntil=new function(){ this.getUseData=function(data,offset){ var arr=[]; for(var i=0;i<=799;i++){ arr.push(data.readInt32LE(826+i*offset)); } return arr; } this.getUseJson=function(data,offset){ var arr=[]; for(var i=0;i<=500;i++){ arr.push(data.readInt32LE(826+i*offset)); } return {'hz':arr}; } }();** 客户端部分:(很多无用的就贴关键的了,其实这个可以暂时无视) <script> var socket = io.connect(); socket.on("test", function (data) { console.log(data); }); socket.on('pushToWebClient', function (data) { console.log(data); }); 现在问题就是服务器的这一部分: exBuffer.on('data', function(buffer) { console.log('>> nodeServer receive data.length:'+buffer.length); //console.log(buffer); //console.log(buffer.readInt32LE(826)); var useData=byteArrayUntil.getUseJson(buffer,offset); console.log(aSocket); aSocket.emit['pushToWebClient',useData.hz]; }); 我把数据接收到了,最后一句转发给客户端不会。ps:不用管对应id问题,我只需要简单实现转发数据即可。 参考过这个文档(如果知道上面怎么处理可以不用继续看了): var http = require('http'), 2 net = require('net'), 3 app = http.createServer().listen('8181'), 4 io = require('socket.io').listen(app), 5 nodeServer = new net.Socket(); 6 // 连接到Tomcat 7 nodeServer.connect(8007, '127.0.0.1', function() { 8 console.log('CONNECTED'); 9 }); 10 // 存储客户端的WebSocket连接实例 11 var aSocket = {}; 12 // 同客户端建立连接 13 io.sockets.on('connection', function (socketIO) { 14 // 从客户端接收数据,然后发送至Tomcat 15 socketIO.on('fromWebClient', function (webClientData) { 16 // 存储至映射表 17 aSocket[socketIO.id] = socketIO; 18 // 发送至Tomcat的数据中添加socket_id 19 webClientData['sid'] = socketIO.id; 20 // 发送String类型的数据至Tomcat 21 nodeServer.write(JSON.stringify(webClientData)); 22 }); 23 // 客户端断开连接 24 socketIO.on('disconnect', function () { 25 console.log('DISCONNECTED FROM CLIENT'); 26 }); 27 }); 28 29 // 从Tomcat接收数据 30 nodeServer.on('data', function (data) { 31 var jsonData = JSON.parse(data.toString()); 32 // 分发数据至客户端 33 for (var i in jsonData.list) { 34 aSocket[jsonData.list[i]['sid']].emit('pushToWebClient', jsonData.list[i].data); 35 } 36 }); 有这么一句 aSocket[jsonData.list[i]['sid']].emit('pushToWebClient', jsonData.list[i].data); 虽然它实现的是通过id来实现建立一一对应连接,但是它还是独立出来使用了(查了一些资料都是在一起用的), 到底该怎么实现呢?ps:不用管对应id问题,我只需要简单实现转发数据即可。 求大神帮助。
Socket通讯中,如果两个客户端同时一刻断开的话,会造成Recv返回的socketID相互覆盖。
Bug:两个客户端趋近于同一时刻关闭的情况,recv返回的是同一个socketID,应该是返回两个socketID才对 现状:启动一个服务器tcpip程序,三台客户端程序,每个20ms连接断开一次,一直循环。 tcp服务器端程序accept阻塞等待客户端连接 tcp服务器端程序recv阻塞等待客户端关闭 [201416][201604]11:44:36 ERROR: accept连接: 端口号54470连接,SOCKET号4852 [201416][201604]11:44:36 ERROR: accept连接: 端口号54726连接,SOCKET号4812 [201416][201604]11:44:36 ERROR: accept连接: 端口号54982连接,SOCKET号4868 [201416][204384]11:44:36 ERROR: recv断开: SOCKET号4852 [201416][204344]11:44:36 ERROR: recv断开: SOCKET号4812 [201416][204432]11:44:36 ERROR: recv断开: SOCKET号4868 [201416][201604]11:44:36 ERROR: accept连接: 端口号55238连接,SOCKET号4880 [201416][201604]11:44:36 ERROR: accept连接: 端口号55494连接,SOCKET号4836 [201416][201604]11:44:36 ERROR: accept连接: 端口号55750连接,SOCKET号4892 [201416][204496]11:44:36 ERROR: recv断开: SOCKET号4880 [201416][204544]11:44:36 ERROR: recv断开: SOCKET号4892 [201416][201604]11:44:36 ERROR: accept连接: 端口号56006连接,SOCKET号4900 [201416][201604]11:44:36 ERROR: accept连接: 端口号56262连接,SOCKET号4860 [201416][203984]11:44:36 ERROR: recv断开: SOCKET号4836 [201416][201604]11:44:36 ERROR: accept连接: 端口号56518连接,SOCKET号4916 [201416][204624]11:44:36 ERROR: recv断开: SOCKET号4916 [201416][204688]11:44:36 ERROR: recv断开: SOCKET号4916 [201416][201604]11:44:36 ERROR: accept连接: 端口号56774连接,SOCKET号4924 [201416][201604]11:44:36 ERROR: accept连接: 端口号57030连接,SOCKET号4884 [201416][204592]11:44:36 ERROR: recv断开: SOCKET号4860 [201416][201604]11:44:36 ERROR: accept连接: 端口号57286连接,SOCKET号4908 [201416][204648]11:44:36 ERROR: recv断开: SOCKET号4884 [201416][201604]11:44:36 ERROR: accept连接: 端口号57542连接,SOCKET号4956 [201416][204664]11:44:36 ERROR: recv断开: SOCKET号4908 [201416][204680]11:44:36 ERROR: recv断开: SOCKET号4884 [201416][201604]11:44:36 ERROR: accept连接: 端口号57798连接,SOCKET号4932 [201416][201604]11:44:36 ERROR: accept连接: 端口号58054连接,SOCKET号4964 [201416][204720]11:44:36 ERROR: recv断开: SOCKET号4956 [201416][204736]11:44:36 ERROR: recv断开: SOCKET号4932 [201416][204752]11:44:36 ERROR: recv断开: SOCKET号4964 [201416][201604]11:44:36 ERROR: accept连接: 端口号58310连接,SOCKET号4972 [201416][201604]11:44:36 ERROR: accept连接: 端口号58566连接,SOCKET号4940 [201416][201604]11:44:36 ERROR: accept连接: 端口号58822连接,SOCKET号4988 [201416][204784]11:44:36 ERROR: 现在的报错,应该和链表没有关系,因为没有用到链表,只打印了recv的值。问题出在了recv中,如果有两个客户端同一时刻断开的时候,recv返回时偶尔会出现同一个socketID.
请问客户端能通过什么方法与服务器端连接?
使用socket编写的客户端和服务器端分别放入两台联网的电脑,请问该客户端能通过什么方法与服务器端连接?
用电信3g网络时tcp服务器端可以接收客户端数据,客户端却接收不到服务器端数据..?
用电信3g网络时tcp服务器端可以接收客户端数据,客户端却接收不到服务器端数据,但是局域网内可以正常双向通信,为什么?服务端用的有线公网IP,客户端用的电信cdma2000制式的3G网络,求大神解答,谢谢啦
tcp socket服务端如何支持wss协议
环境:windows服务器、C# 1、服务器上已有一个web系统,有一个证书,支持https,如网址为:https://api.*****.com 2、服务器还有一个C#编写的tcp socket 服务端软件,监听端口是503.这个服务端支持普通tcp socket连接,也支持web socket, 客户端可通过域名:端口(***:503)也可以通过ws://**.com:503 这2种方式实现连接; 新需求:微信小程序需要通过websocket连接至该tcp socket服务端,但是微信小程序只支持wss协议。 问如何修改tcp socket 的服务端软件,支持wss协议? 例如我再生成一个证书:503.****.com 我想用这个证书作为wss协议使用,但不知道怎么开发了?各位可否提供一些思路就好?谢谢。
socket编程客户端连接失败
想用socket通信,没法解决客户端连接失败,代码是一本书上的实例,书上的都运行不成功吗,大家帮看下问题在那里,谢谢了![图片说明](https://img-ask.csdn.net/upload/201507/13/1436783188_607205.png) 代码如下: 服务器端:################################################### #include<stdio.h> #include<winsock.h> /*引入winsock头文件*/ int main() { /*-----------------------------------------*/ /*------------定义变量---------------------*/ /*-----------------------------------------*/ char Sendbuf[100]; /*发送数据的缓冲区*/ char Receivebuf[100]; /*接受数据的缓冲区*/ int SendLen; /*发送数据的长度*/ int ReceiveLen; /*接收数据的长度*/ int Length; /*表示SOCKADDR的大小*/ SOCKET socket_server; /*定义服务器套接字*/ SOCKET socket_receive; /*定义用于连接套接字*/ SOCKADDR_IN Server_add; /*服务器地址信息结构*/ SOCKADDR_IN Client_add; /*客户端地址信息结构*/ WORD wVersionRequested; /*字(word):unsigned short*/ WSADATA wsaData; /*库版本信息结构*/ int error; /*表示错误*/ /*-----------------------------------------*/ /*------------初始化套接字库---------------*/ /*-----------------------------------------*/ /*定义版本类型。将两个字节组合成一个字,前面是第字节,后面是高字节*/ wVersionRequested = MAKEWORD( 2, 2 ); /*加载套接字库,初始化Ws2_32.dll动态链接库*/ error = WSAStartup( wVersionRequested, &wsaData); if(error!=0) { printf("加载套接字失败!"); return 0; /*程序结束*/ } /*判断请求加载的版本号是否符合要求*/ if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ) { WSACleanup( ); /*不符合,关闭套接字库*/ return 0; /*程序结束*/ } /*-----------------------------------------*/ /*------------设置连接地址-----------------*/ /*-----------------------------------------*/ Server_add.sin_family=AF_INET;/*地址家族,对于必须是AF_INET,注意只有它不是网络网络字节顺序*/ Server_add.sin_addr.S_un.S_addr=htonl(INADDR_ANY);/*主机地址*/ Server_add.sin_port=htons(5000);/*端口号*/ /*------------创建套接字-------------------*/ /*AF_INET表示指定地址族,SOCK_STREAM表示流式套接字TCP,特定的地址家族相关的协议。*/ socket_server=socket(AF_INET,SOCK_STREAM,0); /*-----------------------------------------*/ /*---绑定套接字到本地的某个地址和端口上----*/ /*-----------------------------------------*/ /*socket_server为套接字,(SOCKADDR*)&Server_add为服务器地址*/ if(bind(socket_server,(SOCKADDR*)&Server_add,sizeof(SOCKADDR) )==SOCKET_ERROR) { printf("绑定失败\n"); } /*-----------------------------------------*/ /*------------设置套接字为监听状态---------*/ /*-----------------------------------------*/ /*监听状态,为连接做准备,最大等待的数目为5*/ if(listen(socket_server,5)<0) { printf("监听失败\n"); } /*-----------------------------------------*/ /*------------接受连接---------------------*/ /*-----------------------------------------*/ Length=sizeof(SOCKADDR); /*接受客户端的发送请求,等待客户端发送connect请求*/ socket_receive=accept(socket_server,(SOCKADDR*)&Client_add,&Length); if(socket_receive==SOCKET_ERROR) { printf("接受连接失败"); } /*-----------------------------------------*/ /*--------------进行聊天-------------------*/ /*-----------------------------------------*/ while(1) /*无限循环*/ { /*--------接收数据---------*/ ReceiveLen =recv(socket_receive,Receivebuf,100,0); if(ReceiveLen<0) { printf("接收失败\n"); printf("程序退出\n"); break; } else { printf("client say: %s\n",Receivebuf); } /*--------发送数据---------*/ printf("please enter message:"); scanf("%s",Sendbuf); SendLen=send(socket_receive,Sendbuf,100,0); if(SendLen<0) { printf("发送失败\n"); } } /*-----------------------------------------*/ /*---------释放套接字,关闭动态库----------*/ /*-----------------------------------------*/ closesocket(socket_receive); /*释放客户端的套接字资源*/ closesocket(socket_server);/*释放套接字资源*/ WSACleanup();/*关闭动态链接库*/ return 0; } 客户端:##################################################### #include<stdio.h> #include<winsock.h> /*引入winsock头文件*/ int main() { /*-----------------------------------------*/ /*------------定义变量---------------------*/ /*-----------------------------------------*/ char Sendbuf[100]; /*发送数据的缓冲区*/ char Receivebuf[100]; /*接受数据的缓冲区*/ int SendLen; /*发送数据的长度*/ int ReceiveLen; /*接收数据的长度*/ SOCKET socket_send; /*定义套接字*/ SOCKADDR_IN Server_add; /*服务器地址信息结构*/ WORD wVersionRequested; /*字(word):unsigned short*/ WSADATA wsaData; /*库版本信息结构*/ int error; /*表示错误*/ /*-----------------------------------------*/ /*------------初始化套接字库---------------*/ /*-----------------------------------------*/ /*定义版本类型。将两个字节组合成一个字,前面是第字节,后面是高字节*/ wVersionRequested = MAKEWORD( 2, 2 ); /*加载套接字库,初始化Ws2_32.dll动态链接库*/ error = WSAStartup( wVersionRequested, &wsaData); if(error!=0) { printf("加载套接字失败!"); return 0; /*程序结束*/ } /*判断请求加载的版本号是否符合要求*/ if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ) { WSACleanup( ); /*不符合,关闭套接字库*/ return 0; /*程序结束*/ } /*-----------------------------------------*/ /*------------设置服务器地址---------------*/ /*-----------------------------------------*/ Server_add.sin_family=AF_INET;/*地址家族,对于必须是AF_INET,注意只有它不是网络网络字节顺序*/ /*服务器的地址,将一个点分十进制表示为IP地址,inet_ntoa是将地址转成字符串*/ Server_add.sin_addr.S_un.S_addr = inet_addr("192.168.1.238"); Server_add.sin_port=htons(5000);/*端口号*/ /*-----------------------------------------*/ /*-------------进行连接服务器--------------*/ /*-----------------------------------------*/ /*客户端创建套接字,但是不需要绑定的,只需要和服务器建立起连接就可以了,*/ /*socket_sendr表示的是套接字,Server_add服务器的地址结构*/ socket_send=socket(AF_INET,SOCK_STREAM,0); /*-----------------------------------------*/ /*-------------创建用于连接的套接字--------*/ /*-----------------------------------------*/ /*AF_INET表示指定地址族,SOCK_STREAM表示流式套接字TCP,特定的地址家族相关的协议。*/ if(connect(socket_send,(SOCKADDR*)&Server_add,sizeof(SOCKADDR)) == SOCKET_ERROR) { printf("连接失败!\n"); } /*-----------------------------------------*/ /*--------------进行聊天-------------------*/ /*-----------------------------------------*/ while(1) /*无限循环*/ { /*---------------发送数据过程----------*/ printf("please enter message:"); scanf("%s",Sendbuf); SendLen = send(socket_send,Sendbuf,100,0); /*发送数据*/ if(SendLen < 0) { printf("发送失败!\n"); } /*--------------接收数据过程---------------*/ ReceiveLen =recv(socket_send,Receivebuf,100,0); /*接受数据*/ if(ReceiveLen<0) { printf("接收失败\n"); printf("程序退出\n"); break; } else { printf("Server say: %s\n",Receivebuf); } } /*-----------------------------------------*/ /*---------释放套接字,关闭动态库----------*/ /*-----------------------------------------*/ closesocket(socket_send);/*释放套接字资源*/ WSACleanup();/*关闭动态链接库*/ return 0; }
关于UDP和TCP客户端单例的多线程问题
要求是客户端这边需要一个UDP客户端发送心跳包和一个TCP客户端提供一个可以向TCP服务器发送消息的接口( **要求长连接** )。 需要两个线程来维护这两个单例的客户端。 现在问题就来了,我对于多线程这方面不是特别懂,怎样开启两个线程启动两个客户端,并且TCP客户端的线程开启之后,调用接口之后就可以向服务端发送TCP消息(TCP是长连接,所以这个单例也要一直在运行)。然后就是UDP这块,也需要开启一个线程来持续向服务端发送心跳包。 我用的是MINA写的客户端,但是如何开启分配线程,并且在单例模式下来实现这个功能呢?
MFC中socket TCP编程问题
我在控制台用socket的tcp编程,测试完全没有问题。但是把它直接用在MFC对话框的一个按钮中,先点击服务器端的按钮,再点击客户端的按钮后,服务器端就死机了,一直就是未响应。。求救\("▔□▔)/谢谢!
arm板作为tcp客户端无法连接网络摄像头,报错误代码111
1.问题背景 需要将arm用网线连接网络摄像头对其进行控制。厂商只提供了CGI接口,且由于系统是裁剪过的curl这些也用不了,所以尝试使用tcp协议直接封装成http。 2.问题现象 用tcp工具,pc作为客户端连接摄像头,发送可以直接接收到有效返回。但是arm板与tcp测试工具或者摄像头都连不上,报111 客户端代码如下 ``` static protocol_err_t protocol_CameraCommand(PROTOCOL *this) { unsigned short port = 8000; // 服务器的端口号 char *server_ip = "192.168.13.11"; // 服务器ip地址 int sockfd = socket(AF_INET, SOCK_STREAM, 0);// 创建TCP套接字 if(sockfd < 0) { protocol_SendString(this,"socket failed\n"); return PROTOCOL_ERR_FAIL; } struct sockaddr_in server_addr; //定义服务器信息结构体 bzero(&server_addr,sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); inet_pton(AF_INET, server_ip, &server_addr.sin_addr); int err_log = connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)); // 主动连接服务器 if(err_log != 0) { sprintf(this->sendBuffer, "connect error: %s(errno: %d)\n",strerror(errno),errno); protocol_SendString(this, this->sendBuffer); close(sockfd); return PROTOCOL_ERR_FAIL; } char str1[1024] = ""; sprintf(str1, "%s\r\n","GET /cgi-bin/date_cgi?action=get&user=admin&pwd=admin HTTP/1.1"); //服务端接收数据处理文件地址,并带参数 sprintf(str1, "%s%s\r\n",str1,"Accept: text/html, application/xhtml+xml, image/jxr, */*"); sprintf(str1, "%s%s\r\n",str1,"Accept-Language: zh-CN"); sprintf(str1, "%s%s\r\n",str1,"User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"); sprintf(str1, "%s%s\r\n",str1,"Accept-Encoding: gzip, deflate"); sprintf(str1, "%s%s\r\n",str1,"Host: 192.168.13.11"); //服务器地址 sprintf(str1, "%s%s\r\n",str1,"Connection: Keep-Alive"); //sprintf(str1,"%s%s\r\n",str1,"Cookie: JSESSIONID=5386A9443729D7EB0B61E38A9C7CF52F"); sprintf(str1, "%s\r\n",str1); protocol_SendString(this,"----------------------------- HTTP Data ----------------------------------\n"); sprintf(this->sendBuffer,"%s",str1); protocol_SendString(this, this->sendBuffer); sprintf(this->sendBuffer,"--------------------------- Data Len=%d ----------------------------------\n\n",strlen(str1)); protocol_SendString(this, this->sendBuffer); int ret=send(sockfd, str1, strlen(str1), 0); // 向服务器发送信息 if(ret<0) { protocol_SendString(this,"send"); close(sockfd); return PROTOCOL_ERR_FAIL; } char recv_buf[521]=""; recv(sockfd, recv_buf, sizeof(recv_buf), 0); protocol_SendString(this, "------------------------ server retrun data -------------------------------\n"); sprintf(this->sendBuffer,"%s\n\n",recv_buf); protocol_SendString(this, this->sendBuffer); close(sockfd); return PROTOCOL_ERR_NONE; } ```
C语言 socket 编写简单服务端客户端通信问题
大家好,感谢你的回复。 我用c 写了一个socket通信的小程序,写好了服务端和客户端,可遇到个问题,就是每次启动客户端只能发送第一条消息,之后服务端就不能再收到消息了。 Talk is cheak , show me the code. 服务端代码: ```#include<stdio.h> #include<stdlib.h> #include<WinSock2.h> #pragma comment(lib,"ws2_32.lib") int main(){ WSADATA wsd; SOCKET sockServer; SOCKADDR_IN serveraddr;// 服务端套接字 该结构中包含了要结合的地址和端口号 SOCKET sockClient; SOCKADDR_IN clientaddr; WSAStartup(MAKEWORD(2,2),&wsd);//初始化网络接口 sockServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//创建服务器socket if (sockServer != -1 && sockServer != INVALID_SOCKET){ printf("Socket has been created :%d", sockServer); } else{ printf("Socket create failed."); exit(0); } serveraddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(6000);//绑定端口6000 int bindInfo = bind(sockServer, (SOCKADDR*)&serveraddr, sizeof(SOCKADDR)); char recvBuf[100]; int len = sizeof(SOCKADDR); listen(sockServer, 5);//5为等待连接数 while (1){ sockClient = accept(sockServer, (SOCKADDR*)&clientaddr, &len); //接收客户端数据 recv(sockClient, recvBuf, strlen(recvBuf)+1, MSG_PEEK); printf("to me:%s\n",recvBuf); memset(recvBuf, 0, 100); } closesocket(sockClient); system("pause"); return 0; } ``` 客户端代码: ``` #include<winsock2.h> #include<stdio.h> #pragma comment(lib, "ws2_32.lib") void main() { WSADATA wsaData; SOCKET sockClient;//客户端Socket SOCKADDR_IN addrServer;//服务端地址 WSAStartup(MAKEWORD(2, 2), &wsaData); char message[20] = "HelloSocket!"; //定义要连接的服务端地址 addrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//目标IP(127.0.0.1是回送地址) addrServer.sin_family = AF_INET; addrServer.sin_port = htons(6000);//连接端口6000 //新建客户端socket sockClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); int s = 0; s = connect(sockClient, (SOCKADDR*)&addrServer, sizeof(SOCKADDR)); while (1){ //发送数据 int a = send(sockClient, message, strlen(message) + 1, 0); printf("to server:"); scanf("%s", message); } //关闭socket closesocket(sockClient); WSACleanup(); } ``` 求懂的高手来解答一下。 谢谢了!
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
死磕YOLO系列,YOLOv1 的大脑、躯干和手脚
YOLO 是我非常喜欢的目标检测算法,堪称工业级的目标检测,能够达到实时的要求,它帮我解决了许多实际问题。 这就是 YOLO 的目标检测效果。它定位了图像中物体的位置,当然,也能预测物体的类别。 之前我有写博文介绍过它,但是每次重新读它的论文,我都有新的收获,为此我准备写一个系列的文章来详尽分析它。这是第一篇,从它的起始 YOLOv1 讲起。 YOLOv1 的论文地址:https://www.c
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你也能够顺手拈来。 1、管道 我们来看一条 Linux 的语句 netstat -tulnp | gr...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片
网络(8)-HTTP、Socket、TCP、UDP的区别和联系
TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。 一、TCP与UDP的不同 1. 是否需要建立连接。 UDP在传送数据之前不需要先建立连接;TCP则提供面向连接的服务; 2. 是否需要给出确认 对方的传输层在收到UDP报文后,不需要给出任何确认,而 TCP需要给出确认报文,要提供可靠的、面向连接的传输服务。 3.虽然UDP不提供可靠交...
简明易理解的@SpringBootApplication注解源码解析(包含面试提问)
欢迎关注文章系列 ,关注我 《提升能力,涨薪可待》 《面试知识,工作可待》 《实战演练,拒绝996》 欢迎关注我博客,原创技术文章第一时间推出 也欢迎关注公 众 号【Ccww笔记】,同时推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《提升能力,涨薪可待篇》- @SpringBootApplication注解源码解析 一、@SpringBootApplication 的作用是什
防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!
大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻… 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻,初学数据结构和算法的时候,在忍着枯燥看完定义原理,之后想实现的时候,觉得它们的过程真的是七拐八绕,及其难受。 在简单的链表、栈和队列这些我还能靠着在草稿上写写画画理解过程,但是到了数论、图...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
开挂的人生!那些当选院士,又是ACM/IEEE 双料Fellow的华人学者们
昨日,2019年两院院士正式官宣,一时间抢占了各大媒体头条。 朋友圈也是一片沸腾,奔走相告,赶脚比自己中了大奖还嗨皮! 谁叫咱家导师就是这么厉害呢!!! 而就在最近,新一年度的IEEE/ACM Fellow也将正式公布。 作为学术届的顶级荣誉,不自然地就会将院士与Fellow作比较,到底哪个含金量更高呢? 学术君认为,同样是专业机构对学者的认可,考量标准不一,自然不能一概而论。 但...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库——点这里跳转 文章目录Python语言高频重点汇总**GitHub面试宝典仓库——点这里跳转**1. 函数-传参2. 元类3. @staticmethod和@classmethod两个装饰器4. 类属性和实例属性5. Python的自省6. 列表、集合、字典推导式7. Python中单下划线和双下划线8. 格式化字符串中的%和format9.
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
代码详解:如何用Python快速制作美观、炫酷且有深度的图表
全文共12231字,预计学习时长35分钟生活阶梯(幸福指数)与人均GDP(金钱)正相关的正则图本文将探讨三种用Python可视化数据的不同方法。以可视化《2019年世界幸福报告》的数据为例,本文用Gapminder和Wikipedia的信息丰富了《世界幸福报告》数据,以探索新的数据关系和可视化方法。《世界幸福报告》试图回答世界范围内影响幸福的因素。报告根据对“坎特里尔阶梯问题”的回答来确定幸...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
(经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
今年正式步入了大四,离毕业也只剩半年多的时间,回想一下大学四年,感觉自己走了不少弯路,今天就来分享一下自己大学的学习经历,也希望其他人能不要走我走错的路。 (一)初进校园 刚进入大学的时候自己完全就相信了高中老师的话:“进入大学你们就轻松了”。因此在大一的时候自己学习的激情早就被抛地一干二净,每天不是在寝室里玩游戏就是出门游玩,不过好在自己大学时买的第一台笔记本性能并不是很好,也没让我彻底沉...
如何写一篇技术博客,谈谈我的看法
前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 我一直推崇学技术可以写技术博客去沉淀自己的知识,因为知识点实在是太多太多了,通过自己的博客可以帮助自己快速回顾自己学过的东西。 我最开始的时候也是只记笔记,认为自己能看得懂就好。但如果想验证自己是不是懂了,可以写成技术博客。在写技术博客的...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
互联网公司的裁员,能玩出多少种花样?
裁员,也是一门学问,可谓博大精深!以下,是互联网公司的裁员的多种方法:-正文开始-135岁+不予续签的理由:千禧一代网感更强。95后不予通过试用期的理由:已婚已育员工更有责任心。2通知接下来要过苦日子,让一部分不肯同甘共苦的员工自己走人,以“兄弟”和“非兄弟”来区别员工。3强制996。员工如果平衡不了工作和家庭,可在离婚或离职里二选一。4不布置任何工作,但下班前必须提交千字工作日报。5不给活干+...
【设计模式】单例模式的八种写法分析
网上泛滥流传单例模式的写法种类,有说7种的,也有说6种的,当然也不排除说5种的,他们说的有错吗?其实没有对与错,刨根问底,写法终究是写法,其本质精髓大体一致!因此完全没必要去追究写法的多少,有这个时间还不如跟着宜春去网吧偷耳机、去田里抓青蛙得了,一天天的....
《面试宝典》:检验是否为合格的初中级程序员的面试知识点,你都知道了吗?查漏补缺
欢迎关注文章系列,一起学习 《提升能力,涨薪可待篇》 《面试知识,工作可待篇》 《实战演练,拒绝996篇》 也欢迎关注公 众 号【Ccww笔记】,原创技术文章第一时间推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《面试知识,工作可待篇》-Java笔试面试基础知识大全 前言 是不是感觉找工作面试是那么难呢? 在找工作面试应在学习的基础进行总结面试知识点,工作也指日可待,欢...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
微博推荐算法简述
在介绍微博推荐算法之前,我们先聊一聊推荐系统和推荐算法。有这样一些问题:推荐系统适用哪些场景?用来解决什么问题、具有怎样的价值?效果如何衡量? 推荐系统诞生很早,但真正被大家所重视,缘起于以”facebook”为代表的社会化网络的兴起和以“淘宝“为代表的电商的繁荣,”选择“的时代已经来临,信息和物品的极大丰富,让用户如浩瀚宇宙中的小点,无所适从。推荐系统迎来爆发的机会,变得离用户更近: 快...
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问