Socket TCP通信,客户端关闭Socket能阻止已经在重传的消息吗

最近遇到一个问题,将server端网卡断开造成Client端与其通信异常,由Client端向Server端发送消息,消息进入TCP重传后,断开Client 端Socket,将server端网卡Up,发现已经进入重传的消息竟然还被Server端接收了,求问怎么阻止已经进入重传的消息

2个回答

这个消息在流内 你可以尝试清空流

qq_14844131
这局要赢 关闭Socket已经清空流了,但是消息还是重传了
2 年多之前 回复

重传是socket低层就实现好了的,你不用管它,关心上层就好。关闭socket,是4次挥手,至于重传机制,个人觉得上层最好不要操作。

qq_14844131
这局要赢 我目前是因为Server端网卡up之后,先收到了Client新建Socket的登录报文,随后又收到了网卡Down时候发出的登出报文,导致Client端在Server端最后的状态的登出
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
socket tcp通信客户端句柄设为全局变量
将初始化和发送分别放在两个函数中,句柄设为全局变量,发送结果显示错误:socket on non-socket,求教应该怎么改
客户端和服务端通过建立socket通信,协议是tcp/ip
有一个问题咨询:一个客户端和一个服务端通过tcp/ip连接(之间建立socket通信),在不断网的情况下,服务端关闭,客户端报警,重新开启服务器,客户端能够重新连接上服务端,但是如果拔掉网线,客户端就连接不上服务端了,但从服务端发送过来的数据还是可以读到,可是从客户端发送的数据不能到达服务端,这是为什么???
TCP通信socket异步,客户端报异常:目标主机积极拒绝
服务端只监听时,客户端建立1500个连接请求都可以正常建立连接,但当服务端改成建立连接后触发一个事件给客户端发送数据时,客户端异常:目标主机积极拒绝,只能建立部分连接。是何原因,希望有老师可以指点一下。不胜感激!!
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(); } ``` 求懂的高手来解答一下。 谢谢了!
TCP连接时,服务端监听socket接收客户端连接后新创建的socket默认绑定的端口是监听端口吗?
比如用来监听连接的socket绑定23端口,服务端每接受一个连接都新开一个线程和客户端通信,并把新socket传递给新线程,是不是所有新创建的socket都是经过23端口和客户端通信?
php socket 客户端的多次通信
想用php做一个socket 客户端,可以实现一次连接,然后多次给服务端发消息。具体的想法是这样的: 做一个页面,这个页面上有个按钮和消息栏,点一下按钮就可以把消息栏的内容发送给服务端,再点一下再发送,而不需要重新连接,只是页面打开时跟服务端连接上。 这个要怎么实现呀?请各位大牛帮帮忙,小妹先谢过了。 附上socket类的代码。 <?php /** 定义ip,和端口 */ define ( 'PHP_SOCKET_PORT', '6000' ); define ( 'PHP_SOCKET_HOST', '127.0.0.1' ); define ( 'PHP_SOCKET_START', '' ); define ( 'PHP_SOCKET_END', '' ); // socket class class socket{ var $socket; //socket 句柄 var $sendflag = ">>>"; var $recvflag = "<<<"; var $response; var $debug = 1; function socket($hostname,$port){ $address = gethostbyname($hostname); $this->socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); $result = socket_connect($this->socket,$address,$port); if($this->debug == 1){ if ($result < 0) { $result = "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "<br>"; } else{ $result = "connect OK.<br>"; } } } function sendmsg($msg){ socket_write($this->socket,$msg,strlen($msg)); $result = socket_read($this->socket,100); $this->response = $result; if($this->debug == 1){ printf("<font color=#CCCCCC>%s $msg</fon><br>",$this->sendflag); printf("<font color=blue>%s $result</font><br>",$this->recvflag); } return $result; } function close(){ socket_close($this->socket); } } ?>
java的Socket通信问题,TCP的
题目:服务器是显示汇率的,然后从客户端的界面输入一个金额传给服务器,服务器接受计算后将结果传回客户端,客户端再显示到界面上.我的在客户端页面输入数据点计算之后界面都要用任务管理器关了......绝望.jpg 服务器: public void start() { try { serverSocket = new ServerSocket(113); Socket socket = serverSocket.accept(); DataInputStream input = new DataInputStream(socket.getInputStream()); String clientInputStr = input.readUTF(); DataOutputStream out = new DataOutputStream(socket.getOutputStream()); String result=String.valueOf(Float.valueOf(text_rate.getText())*Integer.parseInt(clientInputStr)); out.writeUTF(result); } catch (IOException e) { e.printStackTrace(); } } 客户端:if(ev.getSource()==button_cal); { try { DataInputStream input = new DataInputStream(socket.getInputStream()); DataOutputStream out = new DataOutputStream(socket.getOutputStream()); String str = new BufferedReader(new InputStreamReader(System.in)).readLine(); out.writeUTF(str); String ret = input.readUTF(); text_m2.setText(ret); socket.close(); } catch (IOException e) { e.printStackTrace(); } }
基于tcp的客户端与客户端通信
刚学习的菜鸟,linux下c编写的网络通信,客户端a先给服务端发送数据,服务端接收到数据,再将接收的数据转给客户端b,现在客户端a能发给服务端,可是客户端b接不到。希望大神能帮忙解决一下。 ``` 服务器 #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #include <arpa/inet.h> #include <netdb.h> #include <unistd.h> #define PORT 5889 #define MAXSIZE 1024 int main(int argc,char *argv[]) { int sockfd; struct sockaddr_in server_addr; int sin_size,newfd; struct sockaddr_in client_addr; char buf[MAXSIZE]; if(argc!=2) { fprintf(stderr,"Usage:%s hostname port\a\n",argv[0]); return 1; } sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1) { fprintf(stderr,"Socket Error: %d\a\n",strerror(errno)); return 1; } memset(&server_addr,0,sizeof(struct sockaddr_in)); server_addr.sin_family=AF_INET; server_addr.sin_port=htons(PORT); server_addr.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1) { fprintf(stderr,"Bind Error: %d\a\n",strerror(errno)); return 1; } if(listen(sockfd,20)) { fprintf(stderr,"Listen Error: %d\a\n",strerror(errno)); return 1; } while(1) { errno = 0; sin_size=sizeof(struct sockaddr_in); newfd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size); if(newfd==-1) { fprintf(stderr,"Accept Error: %d\a\n",strerror(errno)); continue; } fprintf(stderr,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr)); if(fork()==0) { memset(buf,0,sizeof(buf)); if(read(newfd,buf,sizeof(buf))<1) { fprintf(stderr,"Read Error: %d\a\n",strerror(errno)); return 1; } printf ("I have received:%s\n",buf); memset(buf,0,sizeof(buf)); fgets(buf,sizeof(buf),stdin); if(write(newfd,buf,strlen(buf)+1)==-1) { fprintf(stderr,"Write Error: %d\n",strerror(errno)); return 1; } close(newfd); } newfd=-1; } close(sockfd); return 0; } ``` 客户端a ``` #include<stdlib.h> #include<stdio.h> #include<errno.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #include <netdb.h> #include <unistd.h> #define PORT 5889 int main(int argc,char *argv[]) { int sockfd; struct sockaddr_in server_addr; struct hostent *host; int nbytes; char buffer[1024]; if(argc!=3) { fprintf(stderr,"Usage:%s hostname port\a\n",argv[0]); return 1; } if((host=gethostbyname(argv[1]))==NULL) { fprintf(stderr,"Gethostname error\n"); return 1; } sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1) { fprintf(stderr,"Socket Error: %d\a\n",strerror(errno)); return 1; } memset(&server_addr,0,sizeof(server_addr)); server_addr.sin_family =AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr = *((struct in_addr *)host->h_addr); if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1) { fprintf(stderr,"Connect Error:%d\a\n",strerror(errno)); return 1; } while(1) { memset(buffer,0,sizeof(buffer)); fgets(buffer,sizeof(buffer),stdin); if(write(sockfd,buffer,strlen(buffer)+1)==-1) { fprintf(stderr,"Write Error: %d\n",strerror(errno)); return 1; } memset(buffer,0,sizeof(buffer)); if(read(sockfd,buffer,sizeof(buffer))<1) { fprintf(stderr,"Read Error: %d\a\n",strerror(errno)); return 1; } printf ("I have received:%s\n",buffer); } close(sockfd); return 0; } ``` 客户端b ``` #include<stdlib.h> #include<stdio.h> #include<errno.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #include <netdb.h> #include <unistd.h> #define PORT 5889 int main(int argc,char *argv[]) { int sockfd,portnumber; struct sockaddr_in server_addr; struct hostent *host; int nbytes; char buffer[1024]; if(argc!=3) { fprintf(stderr,"Usage:%s hostname portnumber\a\n",argv[0]); return 1; } if((host=gethostbyname(argv[1]))==NULL) { fprintf(stderr,"Gethostname error\n"); return 1; } if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { fprintf(stderr,"Socket Error: %d\a\n",strerror(errno)); return 1; } memset(&server_addr,0,sizeof(server_addr)); server_addr.sin_family =AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr = *((struct in_addr *)host->h_addr); if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1) { fprintf(stderr,"Connect Error:%d\a\n",strerror(errno)); return 1; } while(1) { memset(buffer,0,sizeof(buffer)); nbytes=read(sockfd,buffer,sizeof(buffer)); if(nbytes<1) { fprintf(stderr,"Read Error:%d\a\n",strerror(errno)); return 1; } printf("I have received:%s\n",buffer); memset(buffer,0,sizeof(buffer)); fgets(buffer,sizeof(buffer),stdin); if(write(sockfd,buffer,strlen(buffer)+1)==-1) { fprintf(stderr,"Write Error: %d\n",strerror(errno)); return 1; } } close(sockfd); return 0; } ```
【新手求教】关于socket外网通信
自己写的基于socket的winform服务器和Android客户端使用TCP通信。实现后像微信朋友圈的那种。 在连入同一个局域网下客户端和服务器可以实现通信,现在我想让外网的客户端也能访问服务器。 由于本人入门没多久,查了些资料,然后准备用花生壳把我连在内网的PC做服务器,连入另一个内网的手机做客户端。花生壳给了我一个域名,我添加映射后在我的PC上添加一个IIS服务,然后别人的PC已经可以访问我的那个域名了。然后我用IP138查那个域名获得了一个IP,就把它设置成客户端要绑定的IP,但是结果客户端连不上。 又百度了一下发现众说纷纭,什么NAT打洞啦,还有说做各种没听说过的测试啦。于是头昏脑胀不知到底该怎么办了。只求有木有大侠做过类似的项目的赐教一些经验心得,本人计算机网络知识少得可怜,给个学习的方向也好,感谢在先!
C++基础tcp通信练习问题 客户端连接服务端失败 返回值10038 求答
客户端代码 ``` #define WIN32_LEAN_AND_MEAN #define _WINSOCK_DEPRECATED_NO_WARNINGS #include<WinSock2.h> #include<windows.h> #include<stdio.h> #pragma comment(lib,"ws2_32.lib") int main() { //启动Windows socket2.x环境 WORD ver = MAKEWORD(2, 2); WSADATA dat; WSAStartup(ver, &dat); ///----------------- //1 建立一个socket SOCKET _sock = (AF_INET, SOCK_STREAM, 0); if (INVALID_SOCKET == _sock) { printf("error sock\n"); } else { printf("success sock\n"); } //2 连接服务器 connect sockaddr_in _sin = {}; _sin.sin_family = AF_INET; _sin.sin_port = htons(1234); _sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); int ret = connect(_sock, (sockaddr*)&_sin, sizeof(_sin)); if (SOCKET_ERROR == ret) { printf("error connect\n"); } else { printf("success connect\n"); } //3 接收服务器信息 recv char recvBuf[256] = {}; int nlen = recv(_sock, recvBuf, 256, 0); if (nlen > 0) { printf("recv:%s", recvBuf); } //4 关闭 closesocket closesocket(_sock); ///----------------- WSACleanup(); getchar(); return 0; } ``` 服务端代码 ``` #define WIN32_LEAN_AND_MEAN #define _WINSOCK_DEPRECATED_NO_WARNINGS #include<WinSock2.h> #include<windows.h> #include<stdio.h> #pragma comment(lib,"ws2_32.lib") int main() { //启动Windows socket2.x环境 WORD ver = MAKEWORD(2, 2); WSADATA dat; WSAStartup(ver, &dat); ///----------------- //1 建立一个socket SOCKET _sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //2 bind 绑定用于接受客户端连接的网络端口 sockaddr_in _sin = {}; _sin.sin_family = AF_INET; _sin.sin_port = htons(1234);//htons = host to net unsigned short _sin.sin_addr.S_un.S_addr = INADDR_ANY;//inet_addr("127.0.0.1"); if (SOCKET_ERROR == bind(_sock, (sockaddr*)&_sin, sizeof(_sin))) { printf("bind error\n"); } else { printf("bind success\n"); } //3 listen 监听网络端口 if (SOCKET_ERROR == listen(_sock, 5)) { printf("listen error\n"); } else { printf("listen success\n"); } //4 accept 等待接受客户端连接 sockaddr_in clientAddr = {}; int nAddrLen = sizeof(sockaddr_in); SOCKET _cSock = INVALID_SOCKET; char msgBuf[] = "can't find work"; while (true) { _cSock = accept(_sock, (sockaddr*)&clientAddr, &nAddrLen); if (INVALID_SOCKET == _cSock) { printf("client error\n"); } printf("new client: ip = %s \n", inet_ntoa(clientAddr.sin_addr)); //5 send 向客户端发送一条数据 send(_cSock, msgBuf, strlen(msgBuf) + 1, 0); } //6 closeSocket 关闭 closesocket(_sock); ///----------------- //清除Windows socket 环境 WSACleanup(); return 0; } ``` 运行结果 ![图片说明](https://img-ask.csdn.net/upload/201911/11/1573455848_840860.png) 求大神解答!!!! /////////////////////////////////// 再使用了GetLastError后返回的值是10038
TCP/IP客户端与服务器之间的通信问题。。急求解决方法!!!!!
在做一个项目,问题,客户端和服务器端可以都开两个线程。即客户端打开线程1和线程2,服务器端打开线程1和线程2。在通信过程中服务器线程1与客户端线程1通信,服务器线程2与客户端线程2通信,这样子怎么实现呢???急求
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; }
用电信3g网络时tcp服务器端可以接收客户端数据,客户端却接收不到服务器端数据..?
用电信3g网络时tcp服务器端可以接收客户端数据,客户端却接收不到服务器端数据,但是局域网内可以正常双向通信,为什么?服务端用的有线公网IP,客户端用的电信cdma2000制式的3G网络,求大神解答,谢谢啦
窗口中socket通信服务器向客户端发消息,客户端自动返回:繁忙,下面是客户端代码:
// 接收数据信息 public void ReceiveMsg() { while (true) { try { byte[] date = new byte[1024]; int recv = socket.Receive(date); string str = Encoding.UTF8.GetString(date,0,recv); } catch (SocketException ex) { } } } public void listTest(Object o, EventArgs e, String str) { this.richTextBox1.Text = str; } //设置控件状态 public void Status(Object o, EventArgs e) { lblStatus.Text = "连接成功."; button1.Enabled = false; } //回调(异步调用连接请求) private static void ConnectCallback(IAsyncResult er) { try { // 获取到异步操作信息 Socket client = (Socket)er.AsyncState; UpdateStatus(new Form1(), new EventArgs()); StateObjcet state = new StateObjcet(); state.workSocket = client; client.BeginReceive(state.buffer, 0, StateObjcet.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); // Receive(client); // 结束挂起异步连接操作请求 //client.EndConnect(er); } catch(Exception e) { MessageBox.Show(e.ToString()); return; } } //异步发送信息 /// <summary> /// 异步发送 /// </summary> /// <param name="er"></param> private static void SendCallback(IAsyncResult er) { try { //获取异步对象异步操作信息 Socket Client = (Socket)er.AsyncState; //挂起异步 发送请求 int byteSend = Client.EndSend(er); } catch (Exception e) { MessageBox.Show(e.ToString()); } } /// <summary> ///读取Socket 套接字 /// </summary> /// <param name="client"></param> private static void Receive(Socket client) { try { StateObjcet state = new StateObjcet(); state.workSocket=client; client.BeginReceive(state.buffer,0,StateObjcet.BufferSize,0,new AsyncCallback(ReceiveCallback),state); }catch(Exception e) { MessageBox.Show(e.ToString()); } } /// <summary> /// 异步挂起 /// </summary> /// <param name="er"></param> private static void ReceiveCallback(IAsyncResult er) { try { //异步操作获取用户定义信息 StateObjcet state = (StateObjcet)er.AsyncState; Socket client = state.workSocket; //结束挂起异步读取 int bytebuffer = client.EndReceive(er); if (bytebuffer > 0) { UpdateList(new Form1(), new EventArgs(), Encoding.ASCII.GetString(state.buffer, 0, bytebuffer)); state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytebuffer)); client.BeginReceive(state.buffer, 0, StateObjcet.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); } else { if (state.sb.Length > 1) { response = state.sb.ToString(); } receiveDone.Set(); client.Close(); } } catch (Exception e) { MessageBox.Show(e.ToString()); } } private void button2_Click(object sender, EventArgs e) { if (richTextBox2.Text.Trim() == "") return; else if (richTextBox2.Text.Trim().ToLower() == "clear()") { richTextBox1.Clear(); richTextBox2.Text = ""; return; } else if (Regex.IsMatch(richTextBox2.Text.Trim().ToLower(), @"^[zoom(]+[\d]+[)]$")) { string str = richTextBox2.Text.ToLower(); int size = Convert.ToInt32(str.Substring(str.LastIndexOf('(') + 1, str.IndexOf(')') - str.LastIndexOf('(') - 1)); richTextBox1.Font = new Font("宋体", size, FontStyle.Bold); return; } try { Byte[] bs; string user = null; if (txtUser.Text.Trim() == "在此输入你的名字" || txtUser.Text.Trim() == "") { user = "我"; bs = Encoding.Unicode.GetBytes(string.Format("对方说:({0})\r\n{1}\r\n", DateTime.Now.ToString(),richTextBox2.Text.Trim())); } else { bs = Encoding.Unicode.GetBytes(string.Format("{0}说:({1})\r\n{2}\r\n", txtUser.Text.Trim(),DateTime.Now.ToString(),richTextBox2.Text.Trim())); user = txtUser.Text.Trim(); } bs = System.Text.Encoding.UTF8.GetBytes(richTextBox2.Text); //发现UTF8可支持中文,就用之 socket.BeginSend(bs, 0, bs.Length, 0, new AsyncCallback(SendCallback), socket); txt = string.Format("{0}说:({1})\r\n{2}\r\n", user, DateTime.Now.ToString(), richTextBox2.Text.Trim()); int tempLen = richTextBox1.Text.Length; richTextBox1.AppendText(txt); richTextBox1.Select(tempLen, txt.Length); richTextBox1.SelectionFont = new Font("宋体", 10); richTextBox1.SelectionColor = Color.Red; richTextBox2.Clear(); } catch(Exception ex) { MessageBox.Show("连接尚未建立!无法发送数据!" + ex.Message); } } private void getlocalip(string myip) //dw20150214 { // 获取到本机IP //自动获取到本机电脑端口 IP = IPAddress.Parse(txtIP.Text.Trim()); int point = Convert.ToInt32(txtPoint.Text.Trim()); endpoint = new IPEndPoint(IP, point); } private void Form1_Load(object sender, EventArgs e) { getlocalip(GetServerIP().ToString()); //dw20150214 //建立Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); } private void txtIP_TextChanged(object sender, EventArgs e) { } private void TheradScoket() { Thread TempThread; //开启接收线程 TempThread = new Thread(new ThreadStart(this.ToConnect)); TempThread.IsBackground = true;//设置为后台线程 TempThread.Start(); TempThread.Abort();//关闭线程 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //关闭套接字 client.Close(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { TheradScoket(); // socket.Close(); } } }
QT下多线程Tcp服务器,请问如何让不同的Socket线程互相通信?
# 其实就是想做一个聊天软件,奈何卡在这里想了半天也不知道怎么做。 # 一个客户端打开一个socket线程,然后在客户端输入消息,再发送给服务器端。 # 那么在服务器端怎么把消息发送给另外一个以及打开的客户端? # 之前用socketDescriptor,但不知道是不是不会用,反正不行。
socket连接运行一段时间后无法正常通信.
小弟目前在负责一个socket相关的小项目,具体流程很简单,服务端向客户端发送数据,客户端接收到数据后进入睡眠,然后由第三方工具唤醒客户端,唤醒后服务端继续想客户端发送数据,客户端继续进入睡眠,如此一直循环. 目前小弟碰到的问题是:当循环运行到一定圈数后(有时几百圈,有时一千多圈),服务端send()方法运行过后,客户端却接收不到数据,一直阻塞在receive()方法这. 此时我用netstat -nao查看tcp连接,状态是established 还有就是服务端代码是有python写的,客户端代码是c#,我在客户端设置了socket.ReceiveTimeout(120000),当receive两分钟未收到数据,就会报异常,在catch语句里面关闭连接并重新连接;方法如下 ``` socket.shutdown(SocketShutdown.Both); socket.close(); socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); IPEndPoint endPoint = new IPEndPoint(ip,8002); socket.Connect(endPoint); ``` 但是重新连接后依然无法接收数据,只能一直等待两分钟报错后重连,然后继续报错.但是如果我在运行正常的情况下断开WiFi然后重连,程序是可以继续运行的.. 这个问题已经困扰小弟一两个月了,希望有大佬能够帮小弟分析一下原因,万分感谢!!! 宁外,今天小弟发现服务端python代码在创建socket的时候用的是 ``` s = socket.socket() ``` 而不是 ``` s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ``` 即未指定ipv4协议和流,不知道是不是因为这个的原因(还未验证)
VS2017,MFC,TCP通信,客户端无法连接调试助手
#1.自己所创建的客户端无法连接调试助手。 自己创建的客户端可以和自己创建的服务器端通信,调试助手连不了自己创建的服务器,自己创建的客户端也连不了调试助手。完全不知道问题出在哪了,, 两个客户端可以同时运行,端口和IP使用情况如下: ![图片说明](https://img-ask.csdn.net/upload/201901/17/1547695891_291269.png) #2.客户端核心代码如下: ##“连接”按钮的时间处理程序。 void CGeoDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 char ipaddress[35]; char port[8]; m_ipaddr.GetWindowText(ipaddress,30); cli.sin_addr.s_addr = inet_addr(ipaddress); cli.sin_family = AF_INET; cli.sin_port = m_ter.GetWindowText(port,8); //htons(5000); //创建socket clisock = socket(AF_INET, SOCK_STREAM, 0); //启动线程 ee = 1; AfxBeginThread(thread, 0); } ##线程AfxBeginThread()代码如下 UINT thread(LPVOID v) { char buff[100]; char array[25][30] = { "155.245.160.151", "155.245.160.152", "155.245.160.153", "155.245.160.154", "155.245.160.155", "155.245.160.156", "155.245.160.157", "155.245.160.158", "155.245.160.159", "155.245.160.160", "155.245.160.161", "155.245.160.162", "155.245.160.163", "155.245.160.164", "155.245.160.165", "155.245.160.166", "155.245.160.167", "155.245.160.168", "155.245.160.169", "155.245.160.170", "155.245.160.171", "155.245.160.172", "155.245.160.173", "155.245.160.174", "155.245.160.171" }; /*CSize size; size.cx = 0; size.cy = 30;*/ int s = 1, addcount = 0; CGeoDlg *dlg = (CGeoDlg*)AfxGetApp()->GetMainWnd(); dlg->m_connect.EnableWindow(FALSE); dlg->m_disconnect.EnableWindow(TRUE); //连接到服务器 while (connect(dlg->clisock, (sockaddr*)&(dlg->cli), sizeof(dlg->cli)) && dlg->ee != 0) { dlg->m_edit.SetWindowText("等待....."); //空循环 for (int i = 0; i <= 65000; i++) for (int j = 0; j <= 200; j++); if (addcount == 25) addcount = 0; dlg->cli.sin_addr.s_addr = inet_addr(array[addcount++]); } if (dlg->ee == 1) dlg->m_edit.SetWindowText( "连接成功"); //dlg->m_button1.EnableWindow(TRUE); dlg->SetForegroundWindow(); //循环获得数据 /*while (s != SOCKET_ERROR && dlg->ee != 0) { //调用recv函数接收数据 s = recv(dlg->clisock, buff, 100, 0); dlg->SetForegroundWindow(); if (s != SOCKET_ERROR && dlg->ee != 0) dlg->m_list.InsertItem(dlg->count++, buff); dlg->m_list.Scroll(size); }*/ //发送断开命令 send(dlg->clisock, "Disconnected", 100, 0); //dlg->m_button1.EnableWindow(FALSE); dlg->m_connect.EnableWindow(TRUE); dlg->m_disconnect.EnableWindow(FALSE); closesocket(dlg->clisock); AfxEndThread(0); return 0; } #3.完全不知到问题在哪 非计算机类专业,当时也没认真学,现在急着解决问题,实在不知道该怎么办了,,,
java中多个JFrame类如何使用同一个socket进行通信?
初学java写的模拟atm机,采用tcp协议。问题主要在客户端,我写了多个JFrame类,主界面的登陆按钮触发绑定socket并验证账号功能,但后面的其他窗口如何使用已有的socket连接?下图简要表述我的思路 ![图片说明](https://img-ask.csdn.net/upload/201604/20/1461148090_713045.jpg)
关于java与c的socket通信问题
服务器端是java,客户端是c,通过socket,tcp通信,客户端将一张图片传输到服务器,服务器接收完成后返回一个‘ok’字符串作为应答。运行的时候,服务器可以接收到客户端发来的图片,但是客户端无法接收到服务器的‘ok’应答。对socket了解不深,求大神指点,谢谢了~代码如下: server(java): import java.net.*; import java.io.*; public class ServerTcp { public static void main(String args[])throws Exception{ ServerSocket server = new ServerSocket(8866); byte[] inputByte = null; int length = 0; DataInputStream dis = null; FileOutputStream fos = null; PrintStream out = null; fos = new FileOutputStream(new File("/home/gsw/test/cc.jpg")); inputByte = new byte[5120]; System.out.println("等待链接..."); Socket client = server.accept(); dis = new DataInputStream(client.getInputStream()); out = new PrintStream(client.getOutputStream()); while ((length = dis.read(inputByte, 0, inputByte.length)) > 0) { System.out.println(length); fos.write(inputByte, 0, length); fos.flush(); } System.out.println("完成接收"); out.print("ok"); //服务器应答 dis.close(); out.close(); fos.close(); client.close(); server.close(); System.out.println("关闭!"); } } client(c): #include <stdio.h> #include <sys/socket.h> #include <stdlib.h> #include <sys/types.h> #include <string.h> #include <unistd.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #define SER_PORT 8866 #define MAX_LEN 256 int main(int argc,char **argv) { int sd,rn; struct sockaddr_in client,server; char send_buf[MAX_LEN]; char recv_buf[MAX_LEN]; FILE *fq; int len,opt = 1; if( ( sd = socket(AF_INET,SOCK_STREAM,0)) == -1 ) { perror("socket"); exit(1); } bzero(&server,sizeof(server)); server.sin_family = AF_INET; server.sin_port = htons(SER_PORT); server.sin_addr.s_addr = inet_addr("127.0.0.1"); setsockopt(sd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt)); if( connect(sd,(struct sockaddr *)&server,sizeof(server)) < 0 ) { perror("Connect"); close(sd); exit(1); } if( ( fq = fopen("1.jpg","rb") ) == NULL ) { perror("File open"); close(sd); exit(1); } bzero(send_buf,sizeof(send_buf)); memset(send_buf, 0, MAX_LEN); while( !feof(fq) ) { len = fread(send_buf,1,MAX_LEN,fq); if( len != write(sd,send_buf,len) ) { perror("write"); break; } } memset(recv_buf, 0, MAX_LEN); printf("send all!\n"); if(read(sd,recv_buf,sizeof(recv_buf)) ==-1) //接收应答 { perror("read"); exit(1); } printf("received from server:%s\n",recv_buf); close(sd); fclose(fq); return 0; } 程序也不报错,被阻塞了 server端控制台 ![图片说明](https://img-ask.csdn.net/upload/201504/27/1430099983_23487.png) client端 ![图片说明](https://img-ask.csdn.net/upload/201504/27/1430100004_345600.png)
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
深析Synchronized关键字(小白慎入,深入jvm源码,两万字长文)
目录一、synchronized基础1.1synchronized的使用1.1示例1.2验证1.2.1 普通方法和代码块中使用this是同一个监视器(锁),即某个具体调用该代码的对象1.2.2 静态方法和代码块中使用该类的class对象是同一个监视器,任何该类的对象调用该段代码时都是在争夺同一个监视器的锁定1.2、synchronized的特点二、synchronized进阶2.1对象头2.2sy
GitHub 总星 4w+!删库?女装?表情包?这些沙雕中文项目真是我每天快乐的源泉!
大家好,我是 Rocky0429,一个喜欢在 GitHub 上瞎逛的蒟蒻… 好看的皮囊千篇一律,有趣的灵魂没有底线。作为全球最大的同性交友网站,GayHub GitHub 上不止有鲜活的代码,秃头的算法,还有很多拥有有(sha)趣(diao)灵魂的宝藏。 还记得我之前给大家介绍的 Sorry 项目嘛,一个可以自己做表情包的项目,这个的沙雕程度在下面这些项目面前只能算弟弟。虽然说沙雕不分国...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
这篇博客总结了面试中最常见的微服务面试题,相信对你有所帮助。
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
C语言数字图像处理---1.4直方图拉伸和直方图均衡化
本篇将延续上一篇的内容,对直方图进行扩展,讲述直方图拉伸和直方图均衡化两个内容,并通过简单的C语言来实现这两个基础功能,让初学者通俗易懂。
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
没用过这些 IDEA 插件?怪不得写代码头疼
使用插件,可以提高开发效率。对于开发人员很有帮助。这篇博客介绍了IDEA中最常用的一些插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
推荐一些有趣的在线编程游戏
1.Robocode 让坦克们互相博弈的游戏,你可以看到它们飞奔,碾碎一切挡道的东西。机器人配有雷达与火炮,选手在躲避对手进攻的同时攻击对手,以此来较量得分的多少。这个游戏很有意思,曾经令我沉迷… 你可以用Java、Scala、C#等编程语言,编写人工智能程序,驱动机器人。 2.Code Combat Code Combat是一款学习编程的角色扮演游戏。每一关都用任务的形式设立目标,用实时的反馈...
工作十年的数据分析师被炒,没有方向,你根本躲不过中年危机
2020年刚刚开始,就意味着离职潮高峰的到来,我身边就有不少人拿着年终奖离职了,而最让我感到意外的,是一位工作十年的数据分析师也离职了,不同于别人的主动辞职,他是被公司炒掉的。 很多人都说数据分析是个好饭碗,工作不累薪资高、入门简单又好学。然而今年34的他,却真正尝到了中年危机的滋味,平时也有不少人都会私信问我: 数据分析师也有中年危机吗?跟程序员一样是吃青春饭的吗?该怎么保证自己不被公司淘汰...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
张朝阳回应迟到 1 分钟罚 500:资本家就得剥削员工
loonggg读完需要2分钟速读仅需 1 分钟大家我,我是你们的校长。前几天,搜狐的董事局主席兼 CEO 张朝阳和搜狐都上热搜了。原因很简单,就是搜狐出了“考勤新规”。一封搜狐对员工发布...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
立即提问