?? main.cpp
字號:
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <errno.h>#include <iostream.h>int main(){ // Create a socket cout << "To create socket" << endl; int sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { cout << "socket creation"; return -1; } int port = 5010; struct sockaddr_in sin; //sin.sin_len = sizeof(sin); sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl(INADDR_ANY); sin.sin_port = htons(port); //bind sin to socket cout << "To bind: " << sock << endl; int rt1 = bind(sock, (sockaddr * )&sin, sizeof(sin)); if (rt1 < 0) { cout << "********** Failed to bind: " << rt1 << endl; return -1; } //listening to the port cout << "Bind successful, to listen!" << endl; int rt2 = listen(sock, 3); if (rt2 < 0) { cout << "*************Listening error!"; } cout << "Listen success: " << rt2 << endl; struct sockaddr_in cli_addr; socklen_t clilen = sizeof(cli_addr); memset((char *) &cli_addr, 0, sizeof(cli_addr)); cout << "To accept new connection" << endl; int newSock = accept(sock, (struct sockaddr *) &cli_addr, &clilen); if (newSock < 0) { cout << "********** Failed to accept: " << newSock << endl; return 0; } cout << "Accepted a new sock: " << newSock << endl; char buff[10000]; int len; while (1) { len = 10000; fd_set readFD; FD_ZERO(&readFD); FD_SET(newSock, &readFD); int ret = select(newSock+1, &readFD, 0, 0, 0); cout << "select returned: " << ret << endl; if (ret < 0) { cout << "********** Failed to select: " << ret << endl; continue; } if (FD_ISSET(newSock, &readFD)) { len = read(newSock, buff, len); if (len == 0) { cout << "End of File read" << endl; close(newSock); close(sock); return -1; } cout << "Read data: " << len << endl; cout << "Read data: " << buff << endl; write(newSock, buff, len); } } return 0;}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -