请问:客户端访问服务器,报:Error: 请求的名称有效,但是找不到请求的类型的数据

请问:客户端访问服务器,报:Error: 请求的名称有效,但是找不到请求的类型的数据,怎么回事

2个回答

谢谢各位,已经解决了

Shakespearer
Shakespearer 怎么解决的
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
跨域请求:Proxy error: Could not proxy request 时不时的报这个错误,不知道为啥?
最近在做毕设,前端用的react,后台是node+express+mongodb,接口都写 好了,postman测试也没问题,因为项目里有聊天的功能,所以加入了websocket 进行即时聊天,后台的接口是locahost:4000,socket也是,可就在调接口的时候 浏览器一直报Proxy error,前期一直以为跨域设置的问题,看了很多文档,试了 很多,感觉应该不是跨域的问题,后来又去查是不是端口被占用,发现4000端口 就是我用的浏览器和node在占用,没有别的程序占用,停止了再重启服务器和 客户端还是没用, 重点来了:1.每次开机时,启动项目后,数据调用一切正常 可只要我退出登录再重新登录的时候,就又有很多的500错误proxy error; 2.就是当我某个用户在浏览器上一直处于登录着的状态时,过一段时间后,它就又可以愉快的调数据了,无报错 我试过把后台的连接socket的端口改为了5000,还是不行,我感觉可能是重新登录后,项目是不是又重新连接了服务器啥的,导致端口被占用,所以总是报500 错误,想问下各位大佬,有没有遇到过这种问题,总结一下就是:接口时好时坏, 总是有proxy error的错误,难受我好几天了。。。个人感觉不是前端跨域的问题,求各位大佬出来帮小弟 指点迷津啊,在此感激不尽啊!!! ![图片说明](https://img-ask.csdn.net/upload/202002/12/1581490300_538416.png) ![图片说明](https://img-ask.csdn.net/upload/202002/12/1581490314_869475.png)
C# 客户端远程访问IIS服务器出现:远程服务器返回错误: (404) 未找到。
C# 客户端远程访问IIS服务器出现:远程服务器返回错误: (404) 未找到。但是服务器端可以访问URL:http://192.168.2.179:8081/webform.aspx,请问这是什么原因? ``` private void upload_Click(object sender, System.EventArgs e) { try { //上传服务器的地址(web服务) string address = "http://192.168.2.179:8081/Default.aspx"; //上传后文件保存的名称 string saveName = DateTime.Now.ToString("yyyyMMddHHmmss"); int count = UpSound_Request(address, filePath, saveName, this.progressBar1); if (count > 0) { MessageBox.Show("上传文件成功!"); } else { MessageBox.Show("上传文件失败!"); } } catch (Exception ex) { MessageBox.Show("" + ex.GetBaseException()); } } /// <summary> /// 上传文件 /// </summary> /// <param name="address">文件上传到服务器的路径</param> /// <param name="fileNamePath">要上传的本地路径(全路径)</param> /// <param name="saveName">文件上传后的名称</param> /// <returns>成功返回1,失败返回2</returns> public int UpSound_Request(string address, string fileNamePath, string saveName, ProgressBar progressBar) { int returnValue = 0; //要上传的文件 FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read); //二进制对象 BinaryReader r = new BinaryReader(fs); //时间戳 string strBoundary = "----------" + DateTime.Now.Ticks.ToString("x"); byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + strBoundary + "\r\n"); //请求的头部信息 StringBuilder sb = new StringBuilder(); sb.Append("--"); sb.Append(strBoundary); sb.Append("\r\n"); sb.Append("Content-Disposition: form-data; name=\""); sb.Append("file"); sb.Append("\"; filename=\""); sb.Append(saveName); sb.Append("\";"); sb.Append("\r\n"); sb.Append("Content-Type: "); sb.Append("application/octet-stream"); sb.Append("\r\n"); sb.Append("\r\n"); string strPostHeader = sb.ToString(); byte[] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader); // 根据uri创建HttpWebRequest对象 HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(new Uri(address)); httpReq.Method = "POST"; //对发送的数据不使用缓存 httpReq.AllowWriteStreamBuffering = false; //设置获得响应的超时时间(300秒) httpReq.Timeout = 300000; httpReq.ContentType = "multipart/form-data; boundary=" + strBoundary; long length = fs.Length + postHeaderBytes.Length + boundaryBytes.Length; long fileLength = fs.Length; httpReq.ContentLength = length; try { progressBar.Maximum = int.MaxValue; progressBar.Minimum = 0; progressBar.Value = 0; //每次上传4k int bufferLength = 4096; byte[] buffer = new byte[bufferLength]; //已上传的字节数 long offset = 0; //开始上传时间 DateTime startTime = DateTime.Now; int size = r.Read(buffer, 0, bufferLength); Stream postStream = httpReq.GetRequestStream(); //发送请求头部消息 postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); while (size > 0) { postStream.Write(buffer, 0, size); offset += size; progressBar.Value = (int)(offset * (int.MaxValue / length)); TimeSpan span = DateTime.Now - startTime; double second = span.TotalSeconds; labTime.Text = "已用时:" + second.ToString("F2") + "秒"; if (second > 0.001) { labSpeed.Text = "平均速度:" + (offset / 1024 / second).ToString("0.00") + "KB/秒"; } else { labSpeed.Text = " 正在连接…"; } labState.Text = "已上传:" + (offset * 100.0 / length).ToString("F2") + "%"; labSize.Text = (offset / 1048576.0).ToString("F2") + "M/" + (fileLength / 1048576.0).ToString("F2") + "M"; Application.DoEvents(); size = r.Read(buffer, 0, bufferLength); } //添加尾部的时间戳 postStream.Write(boundaryBytes, 0, boundaryBytes.Length); postStream.Close(); //获取服务器端的响应 //WebResponse webRespon = httpReq.GetResponse(); WebResponse webRespon; try { webRespon = httpReq.GetResponse() as WebResponse; } catch (WebException ex) { webRespon = ex.Response as WebResponse; } Stream s = webRespon.GetResponseStream(); //读取服务器端返回的消息 StreamReader sr = new StreamReader(s); String sReturnString = sr.ReadLine(); s.Close(); sr.Close(); if (sReturnString == "Success") { returnValue = 1; } else if (sReturnString == "Error") { returnValue = 0; } } catch { returnValue = 0; } finally { fs.Close(); r.Close(); } return returnValue; } } ![图片说明](https://img-ask.csdn.net/upload/201908/24/1566628122_433652.png) ```
客户端服务器请求程序时的线程错误
我想给daytime创建一个客户端请求程序,例如客户写入一个服务器地址,服务器响应,客户端的写入返回。但是获取的是:"Only the original thread that created a view hierarchy can touch its views." 我在按钮的监听器事件中创建了一个新的线程。 代码如下: static Socket socket; TextView result; EditText server; Button connect; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); result = (TextView)findViewById(R.id.result); server =(EditText)findViewById(R.id.serverField); result.setMovementMethod(new ScrollingMovementMethod()); connect = (Button)this.findViewById(R.id.enter); connect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub new Thread(new Runnable(){ public void run(){ socket = null; String timestamp; try{ socket = new Socket(server.getText().toString(), Server_Port); InputStream input = socket.getInputStream(); BufferedReader socket_input = new BufferedReader(new InputStreamReader(input)); result.setText(result.getText()+"Connected to: "+socket.getInetAddress()+" on port "+socket.getPort()); while(true){ timestamp = socket_input.readLine(); if(timestamp == null){ result.setText(result.getText()+"\n"+"Server closed connection"); break; } result.setText(result.getText()+"\nDaytime: "+timestamp); } } catch(IOException error){ result.setText(""+error); } finally{ try{ if(socket != null){ socket.close(); } } catch(IOException error){ result.setText(""+error); } } } }).start(); } }); } 那么如何修复线程问题?
java nio 关闭客户端 服务器端的selector.select(TimeOut)方法不阻塞
代码如下: // 反复循环,等待IO while (true) { // 等待某信道就绪(或超时) if (selector.select(TimeOut) == 0) {// 监听注册通道,当其中有注册的 IO // 操作可以进行时,该函数返回,并将对应的 // SelectionKey 加入 selected-key // set log.info("服务器独自等待."); continue; } // 取得迭代器.selectedKeys()中包含了每个准备好某一I/O操作的信道的SelectionKey // Selected-key Iterator 代表了所有通过 select() 方法监测到可以进行 IO 操作的 channel // ,这个集合可以通过 selectedKeys() 拿到 Iterator<SelectionKey> keyIter = selector.selectedKeys().iterator(); while (keyIter.hasNext()) { SelectionKey key = keyIter.next(); try { if (key.isAcceptable()) { // 有客户端连接请求时 protocol.handleAccept(key); } if (key.isReadable()) {// 判断是否有数据发送过来 // 从客户端读取数据 protocol.handleRead(key); } if (key.isValid() && key.isWritable()) {// 判断是否有效及可以发送给客户端 // 客户端可写时 protocol.handleWrite(key); } } catch (IOException ex) { // 出现IO异常(如客户端断开连接)时移除处理过的键 log.error("IO异常(如客户端断开连接)", ex); keyIter.remove(); continue; } // 移除处理过的键 keyIter.remove(); } } 奇怪的现象是,我关闭了客户端后,这个keyIter里面一直会有一个read的key存在,按说客户端关闭了应该阻塞了,很奇怪。
我生成的mongoDB的证书文件,应该如何用呢?
1.问题 目前我生成了X509证书: ca-cert.pem: CA 证书, 用于生成服务器端/客户端的数字证书. ca.pem: CA 私钥, 用于生成服务器端/客户端的数字证书. server-key.pem: 服务器端的 RSA 私钥 server-req.pem: 服务器端的证书请求文件, 用于生成服务器端的数字证书. server-cert.pem: 服务器端的数字证书. client-key.pem: 客户端的 RSA 私钥 client-req.pem: 客户端的证书请求文件, 用于生成客户端的数字证书. client-cert.pem: 客户端的数字证书. 生成语句: openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 7200 -key ca-key.pem -out ca.pem openssl req -newkey rsa:2048 -days 7200 -nodes -keyout server-key.pem -out server-req.pem openssl rsa -in server-key.pem -out server-key.pem openssl x509 -req -in server-req.pem -days 7200 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem openssl req -newkey rsa:2048 -days 7200 -nodes -keyout client-key.pem -out client-req.pem openssl rsa -in client-key.pem -out client-key.pem openssl x509 -req -in client-req.pem -days 7200 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem 现在我想把证书加入到mongo.cnf中,但是无论如何加客户端都无法连上服务端 2.描述 我将cat server-key.pem server-cert.pem > server.pem cat client-key.pem client-cert.pem > client.pem mongodb.cnf的配置信息 net: port: 27017 ssl: mode: requireSSL PEMKeyFile: /data/db/mongo_key/server.pem PEMKeyPassword: wanbang123 CAFile: /data/db/mongo_key/client.pem allowConnectionsWithoutCertificates: true allowInvalidHostnames: true allowInvalidCertificates: true 目前java端使用的证书为: keytool -importcert -alias MySQLCACert -file ca.pem -keystore xxx.jks -storepass wanbang123 连接语句: ./bin/mongo --host 127.0.0.1:27018 --ssl --sslPEMKeyFile /data/db/mongo_key/client.pem --sslCAFile /data/db/mongo_key/server.pem --sslAllowInvalidHostnames 3.报错信息 2019-10-14T09:49:19.480+0800 E NETWORK [thread1] SSL peer certificate validation failed: unable to verify the first certificate 2019-10-14T09:49:19.480+0800 E QUERY [thread1] Error: socket exception [CONNECT_ERROR] for SSL peer certificate validation failed: unable to verify the first certificate :connect@src/mongo/shell/mongo.js:231:14 日志信息 2019-10-14T09:51:04.153+0800 I NETWORK [initandlisten] connection accepted from 172.17.0.1:38354 #1 (1 connection now open) 2019-10-14T09:51:04.172+0800 W NETWORK [conn1] SSL peer certificate validation failed: unable to verify the first certificate 2019-10-14T09:51:04.173+0800 I NETWORK [conn1] end connection 172.17.0.1:38354 (0 connections now open)
C++ http服务器与 java客户端的问题
老大 让我用C++写http服务器,让java的人写客户端 我们在完工后进行对调,不知道为什么 他向我进行url请求时候 我能解析出来进行一系列处理 发送的时候 他那边总是报错 第一次 我先发响应头的信息 类似于 --"HTTP/1.1 200 OK \r\nServer:........ 然后再发html文本的内容 ,他那边接收类型是html类型 但是总是接收不到,显示error,显示出来还是空的。 第二次 我设置纯文本类型 我就直接把字符串发给他结果还是一样的结果,不知道为什么。 求大神们指点一下吧
异步请求为何会请求完成跳转到server.ashx文件
``` $(function () { $("#ImgButOn").click(function () { $.ajax({ url: "server.ashx",//请求服务端地址 cache: false, type: "post",//请求方式 dataType: "json", data: { UserId: $("#TxtUser").val(), UserPwd: $("#TxtPwd").val() },//发送到服务端的数据 success: function (obj) { if (obj == "1") { $("#labPwd").text("登录成功"); } else { $("#labPwd").text("登录失败"); } } error: function (XmlHttpRequest, textStatus, errorThrown) { alert(XmlHttpRequest.responseText); } }) //success:function (date) {//服务端成功处理时回调函数 // alert(date ); //}, //error: function () {//服务端失败时的回调函数 // alert("请求未成功!"); //}, //预期服务端发回数据类型 }) }) SES_Model.User user = new SES_Model.User(); //服务端要获得客户端以AJAX请求发送过来的数据 string UserId = context.Request["TxtUser"]; string UserPwd = context.Request["TxtPwd"]; int i = 0; //在服务器中处理数据 if (UserId != null && UserPwd != null) { i = SES_BLL.Users_Service.User_Enter(UserId, UserPwd); } string msg = string.Empty; context.Response.ContentType = "text/plain"; context.Response.Write(i +""); context.Response.End(); ```
请求:java写的客户端发送数据失败!!
连接时,给服务端发送数据时总是报错!! 11-28 11:15:36.164: D/MainActivity(4212): wifiname:"LcyAP_03001" prxFlag:true substr: LcyAP FirstConn:true 11-28 11:15:36.164: D/MainActivity(4212): Now Ready to create connect to LC:Now wifi stat is:SSID:"LcyAP_03001"wificonnsetat:trueSrvIp:192.168.173.1 11-28 11:15:36.164: W/System.err(4212): java.net.SocketException: Socket is closed 11-28 11:15:36.174: W/System.err(4212): at java.net.Socket.checkOpenAndCreate(Socket.java:675) 11-28 11:15:36.174: W/System.err(4212): at java.net.Socket.getOutputStream(Socket.java:415) 11-28 11:15:36.174: W/System.err(4212): at cn.LCSys.socket.TCPClient.sendMsg(TCPClient.java:104) 11-28 11:15:36.174: W/System.err(4212): at cn.LCSys.MainActivity$4.run(MainActivity.java:410) 11-28 11:15:36.174: W/System.err(4212): at java.lang.Thread.run(Thread.java:841) 11-28 11:15:38.194: D/MainActivity(4212): wifiname:"LcyAP_03001" prxFlag:true substr: LcyAP FirstConn:true 11-28 11:15:38.194: D/MainActivity(4212): Now Ready to create connect to LC:Now wifi stat is:SSID:"LcyAP_03001"wificonnsetat:trueSrvIp:192.168.173.1 11-28 11:15:38.194: W/System.err(4212): java.net.SocketException: Socket is closed 11-28 11:15:38.194: W/System.err(4212): at java.net.Socket.checkOpenAndCreate(Socket.java:675) 11-28 11:15:38.194: W/System.err(4212): at java.net.Socket.getOutputStream(Socket.java:415) 11-28 11:15:38.194: W/System.err(4212): at cn.LCSys.socket.TCPClient.sendMsg(TCPClient.java:104) 11-28 11:15:38.194: W/System.err(4212): at cn.LCSys.MainActivity$4.run(MainActivity.java:410) 11-28 11:15:38.204: W/System.err(4212): at java.lang.Thread.run(Thread.java:841) 客户端代码为: package cn.LCSys.socket; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Reader; import java.net.Socket; import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import cn.LCSys.MainActivity; import cn.LCSys.fragment.SystemSetting; import android.content.Intent; import android.os.SystemClock; import android.util.Log; public class TCPClient { private String TAG = "TCP Client"; private static TCPClient s_Tcp = null; // 要连接的服务器Ip地址 private String SrvIp; // 要连接的远程服务器在监听的端口 private int SrvPort; public boolean isInitialized = false; private boolean bConnect; Socket socket = null ; private long LastTickCount; public static synchronized TCPClient instance() { if (s_Tcp == null) { { s_Tcp = new TCPClient(Const.SOCKET_SERVER, Const.SOCKET_PORT); } } return s_Tcp; } public TCPClient(String HostIp, int HostListenningPort) { LastTickCount = 0; Log.d(TAG,"SrvIP:["+HostIp+"]SrvPort:["+HostListenningPort+"]."); this.SrvIp = HostIp; this.SrvPort = HostListenningPort; bConnect = false; try { start(); } catch (Exception e) { this.isInitialized = false; Log.d(TAG," TCPClient Initialize catch err!"+e.getMessage()); e.printStackTrace(); } } public static final Object locked = new Object(); public static final BlockingQueue<String> queue = new ArrayBlockingQueue<String>( 1024 * 100); //通过数据接收判断是否链路正常 10秒没有数据认为链路异常,进行重新连接 class EchoThread extends Thread{ private Socket socket; @Override public void run() { while(isInitialized){ try { if(LastTickCount > 0) { //10 if((System.currentTimeMillis() - LastTickCount) > Const.SOCKET_TIMOUT) { bConnect = false; LastTickCount = 0; } } SystemClock.sleep(500); } catch (Exception e) { e.printStackTrace(); } } } } //发送数据 public boolean sendMsg(String sendMsg) throws InterruptedException{ try { PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); pw.write(sendMsg); pw.flush(); return true; } catch (Exception e) { bConnect = false; e.printStackTrace(); return false; } } //} // 接收数据的线程 class ReceiveThread extends Thread { private Socket socket; public ReceiveThread(Socket socket) { this.socket = socket; } @Override public void run() { String receivedString; CharBuffer charBuffer = CharBuffer.allocate(4096); while(isInitialized){ try { Reader reader = new InputStreamReader(socket.getInputStream()); charBuffer.clear(); int index = -1; while((index=reader.read(charBuffer))!=-1) { LastTickCount = System.currentTimeMillis(); charBuffer.flip(); //System.out.println("client:"+charBuffer.toString()); Charset cs = Charset.forName("UTF-8"); receivedString = cs.encode(charBuffer).toString() ; int readlen = receivedString.length(); if( readlen > 100) { //无法获取到数据 /*receivedString = Charset.forName("US-ASCII") .newDecoder().decode(buffer).toString();*/ // mylcHandle.ColldataHandle(receivedString); Log.d(TAG,"Read Data Length: "+readlen); } else { Log.d(TAG, "Recv len:"+readlen+" Content:"+receivedString); } Intent i = new Intent(Const.BC);//广播消息,实现类之间的交互 i.putExtra("response", receivedString); MainActivity.s_context.sendBroadcast(i); //给系统配置广播数据 if(null!= SystemSetting.s_context) { Log.d(TAG, "Broad to SystemSetting:"+readlen); SystemSetting.s_context.sendBroadcast(i); } //给实时数据fragement广播数据 /* if(null!= FragmentRealData.s_context) { Intent ii = new Intent(Const.DATABC); ii.putExtra("response", receivedString); Log.d(TAG, "Broad to FragmentRealData:"+readlen); FragmentRealData.s_context.sendBroadcast(ii); }*/ charBuffer.clear(); } } catch (Exception e) { e.printStackTrace(); } } } } public void start() throws UnknownHostException, IOException{ socket = new Socket(SrvIp,SrvPort); if(socket != null) { bConnect = true; isInitialized = true; new ReceiveThread(socket).start(); } else { bConnect = false; } } boolean isConnect() { return bConnect; } public void closeTCPSocket() { try{ if(socket!= null) { socket.close(); isInitialized = false; } } catch(Exception ex) { Log.e(TAG,"Close Socket error!"); } } // public static void main(String[] args) throws UnknownHostException, IOException { // new TCPClient().start(); // } }
boost库asio异步接收出错:error code995:由于线程退出或应用程序请求,已中止I/O操作。
boost开发的服务器和客户端一个小程序,服务器端偶尔会出现995的错误,由于线程退出或应用程序请求,已中止I/O操作。用了智能指针shared_ptr。
websocket 服务器端onmessage中遍历发送消息后触发error,
对应进程的客户端也没收到消息,由于线程退出或应用程序请求,已中止 I/O 操作。 遍历部分和异常部分代码: WsHandler client = list.Find(obj => obj.Uid.ToLower() == rooms[i].UserUid.ToLower()); if (client != null && client.WebSocketContext.WebSocket.State == WebSocketState.Open) { // client.WebSocketContext.WebSocket.State client.Send(message); } /// <summary> /// 异常 /// </summary> public override void OnError() { if (this.Error != null) { Core.Logger.Log.Write(this.Error.ToString(), Core.Logger.MessageType.Error); } try { WsWorker.list.Remove(this); } catch (Exception ex) { Core.Logger.Log.Write(ex.ToString(), Core.Logger.MessageType.Error); } } ------------------------------------------------------ onerror之后出发了onclose,但是客户端没有收到close的消息,个人判断可能是因为路由等中间原因导致客户端判断连接正常,没有发起重新连接请求,不知道加个心跳机制能不能解决问题,或者有更好的方法。
为啥接受不到数据AJAX
``` <script src ="Js/jquery-3.4.1.js"> </script> <script> ////定义变量保存XmlHttpRequest对象 //var xmlHttp = null; ////用于创建AJAX请求核心对象XmlHttpRequest //function createXmlHttpRequest() { // try // { // xmlHttp = new XMLHttpRequest();//适用于IE7+,Fireiox,Chrome等主流浏览器 // } // catch (Error) // { // xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//适用于IE低版本7以下的 // } //} //$(function () { // $("#ImgButOn").click(function () { // //调用函数创建XmlHttpRequest对象 // createXmlHttpRequest(); // //获得需要提交给服务器的数据 // var UserId = $("#TxtUser").val(); // var UserPwd = $("#TxtPwd").val(); // //服务端路劲,同时把数据传送到服务器地址拦 // var serverPath = "server.ashx?UserId=" + UserId + "&UserPwd=" + UserPwd + ""; // //设置XmlHttpRequest对象参数 // xmlHttp.open("get", serverPath, true); // //服务端处理结果,使用XmlHttpRequest对象状态监测 // xmlHttp.onreadystatechange = clicentCallback; // //通过XmlHttpRequest对象发送请求 // xmlHttp.send(); // }) //}) //function clicentCallback() { // //XmlHttpRequest对象状态从开始发送请求到服务端经历了4个分别是: // //返回值 0 :请求位初始化 // //返回值 1 :和服务端连接已经建立 // //返回值 2 : 请求已被服务端接受 // //返回值 3 :请求处理中 // //返回值 4 :请求处理完 // if (xmlHttp.readyState == 4) { // if (xmlHttp.status == 200) { // //获得服务端返回给客户端的结果(纯文本,xml,josn,html) // var msg = xmlHttp.responseText; // alert(msg); // } // } //} //#Jquery封装函数使用AJAX异步请求 $(function () { $("#ImgButOn").click(function () { $.ajax({ url:"server.ashx",//请求服务端地址 type:"get",//请求方式 data:{ "UserId": $("#TxtUser").val(), "UserPwd":$("#TxtPwd").val() }//发送到服务端的数据 success:function (date, status, xmlhttp) {//服务端成功处理时回调函数 alert(date + ":" + status); }, error: function () {//服务端失败时的回调函数 alert("请求未成功!"); }, dataType:"text"//预期服务端发回数据类型 }) }) </script> public void ProcessRequest(HttpContext context) { SES_Model.User user = new SES_Model.User(); //服务端要获得客户端以AJAX请求发送过来的数据 string UserId = context.Request.QueryString["UserId"]; string UserPwd = context.Request.QueryString["UserPwd"]; //在服务器中处理数据 user = SES_BLL.Users_Service.User_Enter(UserId, UserPwd); string msg = string.Empty; if (user != null) { msg = "ok"; } else { msg = "error!"; } context.Response.ContentType = "text/plain"; context.Response.Write(null); } ```
Microsoft Visual C++ Runtime Library error
问题描述:C/S架构的服务器端程序运行几个小时或几天后崩溃,数据库是SQL Server 2008,开发工具VS2008 。 单独操作客户端的全部功能都不崩溃。取日志后多开机个客户端测试程序,持续不断的向数据库 发送日志中的请求,1到5个小时出现“Microsoft Visual C++ Runtime Library error” 。请问有什么办法可以解决?服务器运行在windows下,完成端口+线程池。![![图片说明](https://img-ask.csdn.net/upload/201511/03/1446515656_424639.jpg)图片说明](https://img-ask.csdn.net/upload/201511/03/1446515562_380983.png) ![图片说明](https://img-ask.csdn.net/upload/201511/03/1446515959_779350.jpg)
微信内网页ajax偶尔会进入error异常,有遇到过的小伙伴吗?
微信内网页的ajax请求偶尔会进入error异常,<br> 返回码:{"readyStatus":0,"status":0,"statusText":"error"},<br> 大家有遇到这个情况的吗? 这个问题最关键的是只有**偶然**概率才会进入error,其他大部分都是正常的,说明前台和后台都是没有问题的吧,找了很久原因也没有找到,如有有遇到过这个问题的小伙伴请告知一下这个问题是什么原因以及解决方案。谢谢! <br/><br/> 这个问题有了新的发现: 使用手机抓包工具,在微信客户端访问测试页面,发现当ajax进入error的时候,没有返回任何状态码,也就是该ajax请求没有得到服务器响应。抓包工具给的备注是:socket closed by remote peer <br/> ps:目前只在iphone微信客户端发现这个问题,在安卓手机微信端测试目前还没有发现这个问题。 <br/> 该问题还在进一步研究中,如果有遇到过这个问题的朋友请指点一下,谢谢了。
重金求解,为什么我接收不到socket服务端返回的信息,代码如下,这个logger.debug("result:"result)为什么总是空,确认了服务端的确返回到了socket,怎样才能正确从socket取到值呢?
这是socket客户端代码 ``` import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Client extends Thread { Socket socket = null; public String result = ""; public String in = ""; public Client(String host, int port, String in) { try { in = new String(in.getBytes(),"GBK"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } this.in = in; try { socket = new Socket(host, port); socket.setSoTimeout(1000); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } // public void shutDown() throws IOException { // if (socket != null) { // synchronized (socket) { // socket.close(); // } // } // System.out.println("StopClose.shutDown() complete"); // } @Override public void run() { new sendMessThread().start(); super.run(); try { InputStream s = socket.getInputStream(); byte[] buf = new byte[1024]; int len = 0; while ((len = s.read(buf)) != -1) { System.out.println(new String(buf, 0, len)); } } catch (IOException e) { e.printStackTrace(); } } class sendMessThread extends Thread{ @Override public void run() { super.run(); Scanner scanner=null; OutputStream os= null; try { scanner=new Scanner(System.in); os= socket.getOutputStream(); // String in; // do { // in=scanner.next(); // os.write((""+in).getBytes()); // os.flush(); // } while (!in.equals("bye")); for(int i =0;i<1;i++) { os.write((""+in).getBytes()); os.flush(); } BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream(),"GBK")); String str = ""; System.out.println("RESULT AS FOLLOWING:"); while ((str = rd.readLine()) != null) { System.out.println(str); } // str = rd.readLine(); Client.this.result = str; System.out.println("Client.this.result:"+Client.this.result); rd.close(); } catch (IOException e) { e.printStackTrace(); } scanner.close(); try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { // Client clientTest=new Client("88.6.13.66", 13000); // Client clientTest=new Client("127.0.0.1", 1234,""); // clientTest.start(); } } ``` 这是调用的代码 ``` import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.sql.Connection; import java.sql.Types; import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; public class FaceCheckManage { private final static String DB_ALIAS = "ALIAS";//数据源 private static final String TRXZONE = "trxZone";//输入|地区号 private static final String TYPE = "type";//输入|操作类型 add-注册 check-识别 del-删除 private static final String IMG = "img";//输入|人脸数据 private static final String ID = "id";//输入|编号 private static final String VALUE = "VALUE";//输出|转发数据 public String process(IWFEngine engine, WFActivity activity, WFData wfd, String wfName) throws ParamNotExistException, com.zjft.bpe.stdlib.exception.UnrecognizedScopeException { BizDataModule dm = wfd.getDataModule(); ZjLogger logger = LoggerUtil.getLog(dm.getChannelId(), dm.getTxCode()); ModuleUtil moduleUtil = new ModuleUtil(wfd, wfd.getDataModule(), activity, logger); String trxZone = moduleUtil.getParamValue(TRXZONE); logger.debug("trxZone:"+trxZone); String type = moduleUtil.getParamValue(TYPE); String imgBase64 = moduleUtil.getParamValue(IMG); String id = moduleUtil.getParamValue(ID); Connection conn = wfd.getTxConnection(moduleUtil.getParamValue(DB_ALIAS)); try { /*是否已注册*/ boolean registedFlag = isRegisted(id, conn, logger); if("add".equals(type)&&registedFlag==true) { CommonUtil.setResponseMsg("FFFFF", "用户已注册,请先删除人脸数据", moduleUtil); return "fail"; }else if(("check".equals(type)||"del".equals(type))&&registedFlag==false) { CommonUtil.setResponseMsg("FFFFF", "用户人脸数据未注册", moduleUtil); return "fail"; } } catch (Exception e) { logger.error("查询是否已注册发生异常",e); CommonUtil.setResponseMsg("FFFFF", "查询是否已注册发生异常", moduleUtil); return "fail"; } JSONObject sysParams = null;//系统参数列表 try { //获取人脸识别配置参数 sysParams = getSysParam(type,conn, logger); }catch (TradeException e) { CommonUtil.setResponseMsg("FFFFF", e.getMessage(), moduleUtil); return "fail"; } catch (Exception e) { logger.error("查询人脸识别系统参数发生异常",e); CommonUtil.setResponseMsg("FFFFF", "查询人脸识别系统参数发生异常", moduleUtil); return "fail"; } String ip = sysParams.getString("ip"); String url =sysParams.getString("url"); //组参数 JSONObject paramMap = new JSONObject(); if("add".equals(type)) { paramMap.put("trxZone", trxZone); paramMap.put("programName", "e"); paramMap.put("id", id); paramMap.put("img1", imgBase64); paramMap.put("imgFace1", "50,60,100,120"); paramMap.put("hack1", 1); paramMap.put("customerAgreement", 1); String trxString = "10032"; String jsonString = paramMap.toJSONString(); int length = jsonString.length()+10; String lenString = getLenString(length); String totalString = trxString+lenString+jsonString; logger.debug("totalString:"+totalString); Client client = new Client("88.6.13.66", 13000,totalString); client.start(); String result = client.result; logger.debug("result:"+result); result = result.substring(5,result.length()); moduleUtil.setParamValue(VALUE, result); logger.debug("VALUE:"+result); JSONObject resultJsonObject = JSONObject.parseObject(result); logger.debug("resultJsonObject:"+resultJsonObject); //新增参数 }else if("check".equals(type)) { paramMap.put("trxZone", trxZone); paramMap.put("programName", "e"); paramMap.put("id", id); paramMap.put("img1", imgBase64); paramMap.put("imgFace1", "50,60,100,120"); paramMap.put("threshold", 0.001); paramMap.put("hack1", 1); String trxString = "10034"; String jsonString = paramMap.toJSONString(); int length = jsonString.length()+10; String lenString = getLenString(length); String totalString = trxString+lenString+jsonString; logger.debug("totalString:"+totalString); Client client = new Client("88.6.13.66", 13000,totalString); client.start(); String result = client.result; logger.debug("result:"+result); result = result.substring(5,result.length()); moduleUtil.setParamValue(VALUE, result); logger.debug("VALUE:"+result); JSONObject resultJsonObject = JSONObject.parseObject(result); logger.debug("resultJsonObject:"+resultJsonObject); }else if("del".equals(type)){ paramMap.put("trxZone", trxZone); paramMap.put("programName", "e"); paramMap.put("id", id); String trxString = "10035"; String jsonString = paramMap.toJSONString(); int length = jsonString.length()+10; String lenString = getLenString(length); String totalString = trxString+lenString+jsonString; logger.debug("totalString:"+totalString); try { totalString = new String(totalString.getBytes(),"GBK"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } Client client = new Client("88.6.13.66", 13000,totalString); client.start(); String result = client.result; logger.debug("result:"+result); result = result.substring(5,result.length()); moduleUtil.setParamValue(VALUE, result); logger.debug("VALUE:"+result); JSONObject resultJsonObject = JSONObject.parseObject(result); logger.debug("resultJsonObject:"+resultJsonObject); }else { CommonUtil.setResponseMsg("FFFFF", "错误的操作类型", moduleUtil); return "fail"; } String param = paramMap.toJSONString(); try { param = "params="+URLEncoder.encode(param,"UTF-8"); } catch (UnsupportedEncodingException e) { logger.error("转换为请求数据失败"); return "fail"; } return "ok"; } /** * <p> 函数名:isRegisted </p> * <p> 函数功能:查询该编号用户人脸信息是否已注册 </p> * <p> 处理过程:(描述这个方法的处理逻辑)</p> * <p> 输入参数描述: </p> * <p> 输出参数描述: </p> * <p> 异常处理描述: </p> * <p> 创建信息:liuyuan/2019年6月4日 下午3:29:48/versoin</p> * <p> 修改信息:(修改人名、修改人名.../最后修改时间/修改版本号)</p> * <p> 多个版本修改,则每次新增一行修改信息</p> * @throws Exception */ private boolean isRegisted(String id,Connection conn,ZjLogger logger) throws Exception { String sql = "select t.id from USER_FACE_RECORD t where t.id_number=? or t.user_no=?"; List<SQLPara> sqlParas = new ArrayList<>(); sqlParas.add(new SQLPara("id_number", Types.VARCHAR, id)); sqlParas.add(new SQLPara("user_no", Types.VARCHAR, id)); CachedRowSet rlt = DbOperate.executeQueryByParamName(sql, sqlParas, conn, logger); return rlt.next(); } /** * * <p>Title: getSysParam</p> * <p>Description: 查询人脸识别相关参数 </p> * @param type * @param conn * @param logger * @return * @throws TradeException * @throws Exception */ private JSONObject getSysParam(String type,Connection conn, ZjLogger logger) throws TradeException,Exception { JSONObject sysParam = new JSONObject(); String qrySysParamSQL = " select t.param_value from SYS_PARAM t where t.param_name=? "; List<SQLPara> sqlParas = new ArrayList<>(); // 查询ip sqlParas.add(new SQLPara("param_name", Types.VARCHAR, "faceCheck_ip")); CachedRowSet ipRlt = DbOperate.executeQueryByParamName(qrySysParamSQL, sqlParas, conn, logger); if (!ipRlt.next()) { throw new TradeException("请先配置人脸识别服务器地址(faceCheck_ip)"); } sysParam.put("ip",ipRlt.getString("param_value")); sqlParas.clear(); // 查询url sqlParas.add(new SQLPara("param_name", Types.VARCHAR, "faceCheck_url")); CachedRowSet urlRlt = DbOperate.executeQueryByParamName(qrySysParamSQL, sqlParas, conn, logger); if (!urlRlt.next()) { throw new TradeException("请先配置人脸识别转发url(faceCheck_url)"); } sysParam.put("url",urlRlt.getString("param_value")); sqlParas.clear(); // 查询baseFlag sqlParas.add(new SQLPara("param_name", Types.VARCHAR, "faceCheck_baseFlag")); CachedRowSet baseFlagRlt = DbOperate.executeQueryByParamName(qrySysParamSQL, sqlParas, conn, logger); if (!baseFlagRlt.next()) { throw new TradeException("请先配置人脸识基准照标示(faceCheck_baseFlag)"); } sysParam.put("baseFlag",baseFlagRlt.getInt("param_value")); sqlParas.clear(); // 查询threshold sqlParas.add(new SQLPara("param_name", Types.VARCHAR, "faceCheck_threshold")); CachedRowSet thresholdRlt = DbOperate.executeQueryByParamName(qrySysParamSQL, sqlParas, conn, logger); if (!thresholdRlt.next()) { throw new TradeException("请先配置人脸识误识率阈值(faceCheck_threshold)"); } sysParam.put("threshold",thresholdRlt.getString("param_value")); sqlParas.clear(); //查询channel sqlParas.add(new SQLPara("param_name", Types.VARCHAR, "faceCheck_channel")); CachedRowSet channelRlt = DbOperate.executeQueryByParamName(qrySysParamSQL, sqlParas, conn, logger); if (!channelRlt.next()) { throw new TradeException("请先配置人脸识别转发业务渠道编号(faceCheck_channel)"); } sysParam.put("channel",channelRlt.getString("param_value")); sqlParas.clear(); //交易编号写死,加操作类型大写进行区分 sysParam.put("trCode","SXFH-BF-SWXJ-ITMS-FACE-"+type.toUpperCase()); //查询appName sqlParas.add(new SQLPara("param_name", Types.VARCHAR, "faceCheck_appName")); CachedRowSet appNameRlt = DbOperate.executeQueryByParamName(qrySysParamSQL, sqlParas, conn, logger); if (!appNameRlt.next()) { throw new TradeException("请先配置人脸识别应用名(faceCheck_appName)"); } sysParam.put("appName",appNameRlt.getString("param_value")); sqlParas.clear(); //查询appInfo sqlParas.add(new SQLPara("param_name", Types.VARCHAR, "faceCheck_appInfo")); CachedRowSet appInfoRlt = DbOperate.executeQueryByParamName(qrySysParamSQL, sqlParas, conn, logger); if (!appInfoRlt.next()) { throw new TradeException("请先配置人脸识别客户端APP信息(faceCheck_appInfo)"); } sysParam.put("appInfo",appInfoRlt.getString("param_value")); sqlParas.clear(); //查询retentionTime sqlParas.add(new SQLPara("param_name", Types.VARCHAR, "faceCheck_retentionTime")); CachedRowSet retentionTimeRlt = DbOperate.executeQueryByParamName(qrySysParamSQL, sqlParas, conn, logger); if (!retentionTimeRlt.next()) { throw new TradeException("请先配置人脸识清理时间(faceCheck_retentionTime)"); } sysParam.put("retentionTime",retentionTimeRlt.getString("param_value")); sqlParas.clear(); logger.debug("sysParam:"+sysParam); return sysParam; } public String getLenString (int length) { NumberFormat formatter = NumberFormat.getNumberInstance(); formatter.setMinimumIntegerDigits(5); formatter.setGroupingUsed(false); String lenString = formatter.format(length); return lenString; } } ``` 这个地方为什么总是空的 ![图片说明](https://img-ask.csdn.net/upload/201912/12/1576144606_651895.png)
MFC TCP聊天程序,客户端为什么接受不到服务器发送的信息
客户端://连接服务器端 void CChat_TCPClientDlg::OnButtonConnnet() { m_socket = socket(AF_INET,SOCK_STREAM,0); int retconnect; unsigned short temport; UpdateData(TRUE);//刷新控件的值到变量上,刷新端口号 temport = (unsigned short)m_ClientPort; DWORD dwIP; ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS))->GetAddress(dwIP); sockaddr_in addrTo; addrTo.sin_addr.S_un.S_addr = htonl(dwIP); addrTo.sin_family = AF_INET; addrTo.sin_port = htons(temport); retconnect = connect(m_socket,(sockaddr*)&addrTo,sizeof(sockaddr)); if(SOCKET_ERROR == retconnect) { SetDlgItemText(IDC_EDIT_STATE,"连接失败"); return; } else SetDlgItemText(IDC_EDIT_STATE,"连接成功"); CButton *pButton=(CButton*)GetDlgItem(IDC_BUTTON_CONNNET); pButton->EnableWindow(FALSE); pButton=(CButton*)GetDlgItem(IDC_BUTTON_OUT); pButton->EnableWindow(TRUE); pButton=(CButton*)GetDlgItem(IDC_BUTTON_SEND); pButton->EnableWindow(TRUE); pButton=(CButton*)GetDlgItem(IDC_BUTTON_CLEAR); pButton->EnableWindow(TRUE); GetDlgItemText(IDC_EDIT_USERNAME,username); char NewMember[200]; CTime tm=CTime::GetCurrentTime(); CString str=tm.Format("%Y-%m-%d %H:%M:%S"); sprintf(NewMember,"%s--->进入聊天室 %s",username,str); send(m_socket,NewMember,sizeof(NewMember),0); HANDLE thread; thread=CreateThread(NULL,0,RecvProc,NULL,0,NULL); CloseHandle(thread); } DWORD WINAPI CChat_TCPClientDlg::RecvProc(LPVOID lpParameter) { CChat_TCPClientDlg* pDlg = (CChat_TCPClientDlg*)(::AfxGetApp()->GetMainWnd()); SOCKET ClientSocket; ClientSocket = pDlg->m_socket; HWND hwnd = pDlg->m_hWnd; int retrecv=0; char recvbuf[1024]; while(1) { memset(recvbuf,0,sizeof(recvbuf)); retrecv = recv(ClientSocket,recvbuf,1024,0); if(SOCKET_ERROR == retrecv) { ::SetDlgItemText(hwnd,IDC_EDIT_STATE,"连接断开"); break; } else { pDlg->m_ListRecv.AddString(recvbuf); pDlg->m_ListRecv.SetHorizontalExtent(10000); } } return 0; } void CChat_TCPClientDlg::OnButtonSend() { // TODO: Add your control notification handler code here CString tempSend; char strSend[300]; GetDlgItemText(IDC_EDIT_SEND,tempSend); GetDlgItemText(IDC_EDIT_USERNAME,username); sprintf(strSend,"%s说: %s",username,tempSend); int retsend; retsend = send(m_socket,strSend,strlen(strSend)+1,0); if(retsend==SOCKET_ERROR) { CButton *pButton=(CButton*)GetDlgItem(IDC_BUTTON_OUT); pButton->EnableWindow(FALSE); pButton=(CButton*)GetDlgItem(IDC_BUTTON_SEND); pButton->EnableWindow(FALSE); pButton=(CButton*)GetDlgItem(IDC_BUTTON_CLEAR); pButton->EnableWindow(FALSE); pButton=(CButton*)GetDlgItem(IDC_BUTTON_CONNNET); pButton->EnableWindow(TRUE); SetDlgItemText(IDC_EDIT_STATE,"连接断开"); } else { SetDlgItemText(IDC_EDIT_SEND,""); } } void CChat_TCPClientDlg::OnButtonOut() { // TODO: Add your control notification handler code here /* GetDlgItemText(IDC_EDIT_USERNAME,username); char leavechar[50]; sprintf(leavechar,"%s<---离开聊天室",username); send(m_socket,leavechar,sizeof(leavechar),0);*/ closesocket(m_socket); SetDlgItemText(IDC_EDIT_STATE,"没有连接"); CButton *pButton=(CButton*)GetDlgItem(IDC_BUTTON_CONNNET); pButton->EnableWindow(TRUE); pButton=(CButton*)GetDlgItem(IDC_BUTTON_OUT); pButton->EnableWindow(FALSE); pButton=(CButton*)GetDlgItem(IDC_BUTTON_SEND); pButton->EnableWindow(FALSE); pButton=(CButton*)GetDlgItem(IDC_BUTTON_CLEAR); pButton->EnableWindow(FALSE); } void CChat_TCPClientDlg::OnButtonClear() { // TODO: Add your control notification handler code here m_ListRecv.ResetContent(); } 服务器: // the minimized window. HCURSOR CChat_TCPSrvDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } BOOL CChat_TCPSrvDlg::InitSocket(unsigned short port) { //初始化连接套接字 ClientTotal = 0; for(int i=0;i<20;i++) { ClientSocket[i] = 0; ClientAddr[i] = ""; } //创建绑定监听套接字 m_socket = socket(AF_INET,SOCK_STREAM,0); if(INVALID_SOCKET==m_socket) { SysStr = "创建socket失败"; m_SysMsg.AddString(SysStr); return FALSE; } else { SysStr = "创建socket成功"; m_SysMsg.AddString(SysStr); m_SysMsg.SetHorizontalExtent(1000); } //地址族赋值 sockaddr_in addrsock; addrsock.sin_addr.S_un.S_addr = htonl(INADDR_ANY); addrsock.sin_family = AF_INET; addrsock.sin_port = htons(port); //绑定套接字 int retbind; retbind = bind(m_socket,(SOCKADDR*)&addrsock,sizeof(SOCKADDR)); if(SOCKET_ERROR==retbind) { closesocket(m_socket); SysStr = "bind 失败"; m_SysMsg.AddString(SysStr); SysStr = "启动失败"; m_SysMsg.AddString(SysStr); return FALSE; } else { SysStr = "bind成功"; m_SysMsg.AddString(SysStr); } //设置监听模式 if(listen(m_socket,20)!=0) { SysStr = "启动失败"; m_SysMsg.AddString(SysStr); return FALSE; } else { SysStr = "服务器启动成功"; m_SysMsg.AddString(SysStr); } return TRUE; } //启动服务器 void CChat_TCPSrvDlg::OnButtonStart() { // TODO: Add your control notification handler code here SrvState = TRUE; ClientTotal = 0; unsigned short temport; BOOL InitSock; UpdateData(TRUE); temport = m_Port; if(temport>=1025 && temport<=9999) { InitSock = InitSocket(temport); //调用初始化套接字 //让“启动按钮”不可用,和让“关闭按钮”可用 CButton *pButton=(CButton*)GetDlgItem(IDC_BUTTON_CLOSE); pButton->EnableWindow(); pButton=(CButton*)GetDlgItem(IDC_BUTTON_START); pButton->EnableWindow(FALSE); //创建一级线程,用于监听用户的连接 HANDLE hThread=CreateThread(NULL,0,AcceptClient,NULL,0,NULL); CloseHandle(hThread); } else { SysStr="端口号不在使用范围内,启动失败"; m_SysMsg.AddString(SysStr); m_SysMsg.SetHorizontalExtent(1000); } hMutex = CreateMutex(NULL,FALSE,NULL); } //一级线程,连接客户请求 DWORD WINAPI CChat_TCPSrvDlg::AcceptClient(LPVOID lpParameter) { CChat_TCPSrvDlg* pDlg = (CChat_TCPSrvDlg*)(::AfxGetApp()->GetMainWnd()); SOCKET socketacp = pDlg->m_socket; sockaddr_in addrClient; int len = sizeof(sockaddr); while(pDlg->SrvState) { pDlg->ClientSocket[pDlg->ClientTotal]=accept(socketacp,(SOCKADDR *)&addrClient,&len); WaitForSingleObject(pDlg->hMutex,INFINITE); pDlg->ClientTotal++; pDlg->SysStr = "新用户加入"; pDlg->m_SysMsg.AddString(pDlg->SysStr); ReleaseMutex(pDlg->hMutex); if(pDlg->ClientTotal==1) //只是用来启动二级进程,当第二个客户端连接上后,if语句不执行,recv进程一直在执行 { //创建二级线程,用于接收数据。 HANDLE hThread=CreateThread(NULL,0,RecvProc,NULL,0,NULL); CloseHandle(hThread); } } return 0; } //二级线程,接收用户消息,并显示 DWORD WINAPI CChat_TCPSrvDlg::RecvProc(LPVOID lpParameter) { CChat_TCPSrvDlg* pDlg1 = (CChat_TCPSrvDlg*)(::AfxGetApp()->GetMainWnd()); fd_set fsRead; timeval tm = {0,10000}; char recvBuf[200]; while(pDlg1->SrvState) { FD_ZERO(&fsRead); for(int m=0;m<(pDlg1->ClientTotal);m++) //对所有用户进行select监视 FD_SET((pDlg1->ClientSocket[m]),&fsRead); int retRead = select(pDlg1->ClientTotal+1,&fsRead,NULL,NULL,&tm); if(SOCKET_ERROR == retRead) return 1; else { for(int index=0;index<(pDlg1->ClientTotal);index++) { if(FD_ISSET(pDlg1->ClientSocket[index],&fsRead)) { memset(recvBuf,0,sizeof(recvBuf)); recv(pDlg1->ClientSocket[index],recvBuf,sizeof(recvBuf),0); if(strlen(recvBuf)==0) //判断用户是否退出 { pDlg1->SysStr = "有一个用户离开"; pDlg1->m_SysMsg.AddString(pDlg1->SysStr); pDlg1->ClientSocket[index] = pDlg1->ClientSocket[pDlg1->ClientTotal-1]; //将最后一个放到刚刚退出的client那里去 pDlg1->ClientSocket[pDlg1->ClientTotal-1] = 0; //保证所有未退出的客户端都在前面 if(pDlg1->ClientTotal==0) return 0; pDlg1->ClientTotal--; } else { pDlg1->m_UserMsg.AddString(recvBuf); pDlg1->m_UserMsg.SetHorizontalExtent(10000); for(int n=0;n<(pDlg1->ClientTotal);n++) { send(pDlg1->ClientSocket[n],recvBuf,sizeof(recvBuf),0); } } } } } } return 0; } //关闭服务器 void CChat_TCPSrvDlg::OnButtonClose() { // TODO: Add your control notification handler code here WaitForSingleObject(hMutex,INFINITE); SysStr="服务器已关闭"; m_SysMsg.AddString(SysStr); SrvState = FALSE; for(int k=0;k<ClientTotal;k++) send(ClientSocket[k],"服务器已关闭,请断开服务器重新连接",sizeof("服务器已关闭,请断开服务器重新连接")+1,0); closesocket(m_socket); while(ClientTotal>0) { closesocket(ClientSocket[ClientTotal-1]); ClientTotal--; } CButton *pButton=(CButton*)GetDlgItem(IDC_BUTTON_CLOSE); pButton->EnableWindow(FALSE); pButton=(CButton*)GetDlgItem(IDC_BUTTON_START); pButton->EnableWindow(); } void CChat_TCPSrvDlg::OnClickedButtonSend() { // TODO: 在此添加控件通知处理程序代码 CString tempSend; char strSend[300]; GetDlgItemText(IDC_EDIT_SEND,tempSend); sprintf(strSend,"服务器: %s",tempSend); send(m_socket,strSend,strlen(strSend)+1,0); m_UserMsg.AddString(strSend); SetDlgItemText(IDC_EDIT_SEND,""); } void CChat_TCPSrvDlg::OnClickedButtonClear() { // TODO: 在此添加控件通知处理程序代码 m_UserMsg.ResetContent(); } ![图片说明](https://img-ask.csdn.net/upload/201704/11/1491901491_164250.jpg)
ftp服务器的问题c++语言
计网课程设计要做一个ftp服务器并用命令行进行连接和访问, 现在在连接的时候不知道为什么连接不上,服务器过一会儿就自动断开 ![图片说明](https://img-ask.csdn.net/upload/201906/25/1561448979_761798.png) 下面是代码 ``` #include<io.h> #include<string> #include<iostream> #include<vector> #include<thread> #include<WS2tcpip.h> #include<winsock2.h> #pragma comment(lib,"ws2_32.lib") #pragma warning(disable : 4996) int main() { WORD sockVersion = MAKEWORD(2, 2); WSADATA data; if (WSAStartup(sockVersion, &data) != 0) { std::cout << "WSAStartup error" << std::endl; return 0; } SOCKET serverSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (INVALID_SOCKET == serverSock) { std::cout << "socket erroro" << std::endl; closesocket(serverSock); WSACleanup(); return 0; } sockaddr_in cmd_port; cmd_port.sin_family = AF_INET; cmd_port.sin_port = htons(21); inet_pton(AF_INET, "127.0.0.1", &cmd_port.sin_addr); if (bind(serverSock, (SOCKADDR*)& cmd_port, sizeof(SOCKADDR))) { std::cout << "bind error" << std::endl; closesocket(serverSock); WSACleanup(); return 0; } if (listen(serverSock, 5) == SOCKET_ERROR) { std::cout << "listen error" << std::endl; closesocket(serverSock); WSACleanup(); return 0; } SOCKET userSock;//用户端socket信息 sockaddr_in user_sockAddr;//用于accept函数,存放客户端的信息 int addrlen = sizeof(user_sockAddr); while (true) { std::cout << "waiting to be connected..." << std::endl; userSock = accept(serverSock, (SOCKADDR*)& user_sockAddr, &addrlen);//接受用户端请求,返回一个套接字 if (INVALID_SOCKET == userSock) { std::cout << "accept error." << std::endl; continue; } char user_ip[16]; inet_ntop(AF_INET, &user_sockAddr.sin_addr, user_ip, sizeof(user_ip)); std::cout << "接收到一个链接:" << user_ip << std::endl; } } ``` 望各位大触指教
cpprest 客户端收不到http_response
客户端向服务端request请求后,服务器端能接收到http_request,然后reply回复,客户端就无法收到这个http_response,帮忙看看,实在找不出来原因了 客户端代码 ``` #include "cpprest/http_client.h" #include "cpprest/filestream.h" using namespace utility; // Common utilities like string conversions using namespace web; // Common features like URIs. using namespace web::http; // Common HTTP functionality using namespace web::http::client; // HTTP client features using namespace concurrency::streams; // Asynchronous streams int main(int argc, char* argv[]) { auto fileStream = std::make_shared<ostream>(); // Open stream to output file. pplx::task<void> requestTask = fstream::open_ostream(U("results.html")).then([=](ostream outFile) { *fileStream = outFile; // Create http_client to send the request. http_client client(U("http://www.bing.com/")); http_client localclient(U("http://localhost:8888")); return localclient.request(methods::GET); }) .then([=](http_response response) { printf("Received response status code:%u\n", response.status_code()); system("pause"); return response.body().read_to_end(fileStream->streambuf()); }) .then([=](size_t) { return fileStream->close(); }); try { requestTask.wait(); } catch (const std::exception &e) { printf("Error exception:%s\n", e.what()); system("pause"); } return 0; } ``` 服务器代码 ``` #include "cpprest/json.h" #include "cpprest/http_listener.h" #include "cpprest/uri.h" #include "cpprest/asyncrt_utils.h" #include "cpprest/http_client.h" using namespace web::http::experimental::listener; using namespace web::http; using namespace web; void handle_get(http_request message) { message.reply(status_codes::OK, U("Hello, World!")); }; void handle_post(http_request message) { message.reply(status_codes::NotFound); }; void handle_put(http_request message) { message.reply(status_codes::NotFound); }; void handle_delete(http_request message) { message.reply(status_codes::NotFound); }; #define TRACE(msg) std::wcout << msg #define TRACE_ACTION(a, k, v) std::wcout << a << L" (" << k << L", " << v << L")\n" int main(int argc, char ** argv) { uri_builder uri(U("http://localhost:8888")); http_listener listener(uri.to_uri()); listener.support(methods::GET, handle_get); listener.support(methods::POST, handle_post); listener.support(methods::PUT, handle_put); listener.support(methods::DEL, handle_delete); try { listener .open() .then([&listener](){TRACE(L"\nstarting to listen\n"); }) .wait(); while (true); } catch (std::exception const & e) { std::wcout << e.what() << std::endl; } catch (...) { std::wcout << "Unknown exception" << std::endl; } return 0; } ```
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; }
C++web服务器响应头设置set-cookie无效
如题: 测试的web服务器端代码如下: sprintf_s(customhtml2, sizeof(customhtml2), "HTTP/1.1 200 OK\r\n <set-Cookie:sid=%u;path=/> ", u_session_id); string strhtml1 = string(customhtml2); strhtml1 += "\r\n\r\n"; ifstream infile("loginSuc.html", ios::in | ios::_Nocreate); if (!infile){ cout << "open loginSuc.html fail,the error code:" << GetLastError() << endl; continue; } infile.read(CustomHtml, sizeof(CustomHtml)); if (strlen(CustomHtml) <= 0){ cout << "read loginSuc.html fail" << endl; continue; } string strhtml2 = string(CustomHtml); strhtml1 += strhtml2; strcpy_s(CustomHtml,strhtml1.c_str()); int sendNum = send(socketArray[p].s_socket, CustomHtml, strlen(CustomHtml), 0); cout << CustomHtml; 就是将响应头和响应体拼起来发回客户端 获取的响应如下图: ![图片说明](https://img-ask.csdn.net/upload/201510/22/1445502784_817030.png) 但是当客户端继续访问其他页面时候,请求头里面并没有cookie这个首部。是怎么回事?????熟悉的大神求助
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
死磕YOLO系列,YOLOv1 的大脑、躯干和手脚
YOLO 是我非常喜欢的目标检测算法,堪称工业级的目标检测,能够达到实时的要求,它帮我解决了许多实际问题。 这就是 YOLO 的目标检测效果。它定位了图像中物体的位置,当然,也能预测物体的类别。 之前我有写博文介绍过它,但是每次重新读它的论文,我都有新的收获,为此我准备写一个系列的文章来详尽分析它。这是第一篇,从它的起始 YOLOv1 讲起。 YOLOv1 的论文地址:https://www.c...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片...
简明易理解的@SpringBootApplication注解源码解析(包含面试提问)
欢迎关注文章系列 ,关注我 《提升能力,涨薪可待》 《面试知识,工作可待》 《实战演练,拒绝996》 欢迎关注我博客,原创技术文章第一时间推出 也欢迎关注公 众 号【Ccww笔记】,同时推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《提升能力,涨薪可待篇》- @SpringBootApplication注解源码解析 一、@SpringBootApplication 的作用是什...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给袈...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库 回到首页 目录: Python语言高频重点汇总 目录: 1. 函数-传参 2. 元类 3. @staticmethod和@classmethod两个装饰器 4. 类属性和实例属性 5. Python的自省 6. 列表、集合、字典推导式 7. Python中单下划线和双下划线 8. 格式化字符串中的%和format 9. 迭代器和生成器 10...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
ES6基础-ES6的扩展
进行对字符串扩展,正则扩展,数值扩展,函数扩展,对象扩展,数组扩展。 开发环境准备: 编辑器(VS Code, Atom,Sublime)或者IDE(Webstorm) 浏览器最新的Chrome 字符串的扩展: 模板字符串,部分新的方法,新的unicode表示和遍历方法: 部分新的字符串方法 padStart,padEnd,repeat,startsWith,endsWith,includes 字...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
web前端javascript+jquery知识点总结
Javascript javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ,语法同java类似,是一种解释性语言,边执行边解释。 JavaScript的组成: ECMAScipt 用于描述: 语法,变量和数据类型,运算符,逻辑控制语句,关键字保留字,对象。 浏览器对象模型(Br
Qt实践录:开篇
本系列文章介绍笔者的Qt实践之路。
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
为什么听过很多道理,依然过不好这一生?
记录学习笔记是一个重要的习惯,不希望学习过的东西成为过眼云烟。做总结的同时也是一次复盘思考的过程。 本文是根据阅读得到 App上《万维钢·精英日课》部分文章后所做的一点笔记和思考。学习是一个系统的过程,思维模型的建立需要相对完整的学习和思考过程。以下观点是在碎片化阅读后总结的一点心得总结。
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
一条链接即可让黑客跟踪你的位置! | Seeker工具使用
搬运自:冰崖的部落阁(icecliffsnet) 严正声明:本文仅限于技术讨论,严禁用于其他用途。 请遵守相对应法律规则,禁止用作违法途径,出事后果自负! 上次写的防社工文章里边提到的gps定位信息(如何防止自己被社工或人肉) 除了主动收集他人位置信息以外,我们还可以进行被动收集 (没有技术含量) Seeker作为一款高精度地理位置跟踪工具,同时也是社交工程学(社会工程学)爱好者...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧...... 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问