#include <winsock2.h> #include <stdio.h> #include <stddef.h> #define QUEUE_LEN 100 int main() { WSADATA wsaData; WORD sockVersion=MAKEWORD(2,2); int local_port; SOCKET localtcpsocket; struct sockaddr_in mysock_addr; if(WSAStartup(sockVersion, &wsaData)!=0) { return -1; } printf("......Input local listen port!......\n"); scanf("%d", &local_port); printf("......server listen......\n"); localtcpsocket = socket(AF_INET, SOCK_STREAM, 0); if (INVALID_SOCKET == localtcpsocket) { printf("......invalid socket......\n"); return -1; } mysock_addr.sin_family = AF_INET; mysock_addr.sin_port = htons(local_port); mysock_addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); if (SOCKET_ERROR == bind(localtcpsocket, (const struct sockaddr_in *)&mysock_addr, sizeof(mysock_addr))) { printf("bind error\n"); return -1; } if (listen(localtcpsocket, QUEUE_LEN) < 0) { printf("listen error\n"); return -1; } while (1) { char buffer[10240]; SOCKET recvsoc; struct sockaddr_in peerTcp; int len; recvsoc = accept(localtcpsocket,(const struct sockaddr_in *)&peerTcp, &len); if (recvsoc <= 0) { printf("accept error\n"); continue; } printf("peer %s is connect to you\n", inet_ntoa(peerTcp.sin_addr)); if ( recv(recvsoc, buffer, sizeof(buffer), 0) <= 0) { printf("recv error, maybe time exceed!\n"); } else { printf("%s\n", buffer); } } WSACleanup(); return 0; }
#include <WinSock.h> #include <stdio.h> #include <stddef.h> #pragma comment(lib,"ws2_32.lib") #define QUEUE_LEN 100 void Response2Client(SOCKET socket, struct sockaddr_in peerTcp); int main() { WSADATA wsaData; WORD sockVersion=MAKEWORD(2,2); int local_port; SOCKET localtcpsocket; struct sockaddr_in mysock_addr; if(WSAStartup(sockVersion,&wsaData)!=0) { return -1; } printf("......Input local listen port!......\n"); scanf("%d",&local_port); printf("......server listen......\n"); localtcpsocket = socket(AF_INET,SOCK_STREAM,0); if (INVALID_SOCKET == localtcpsocket) { printf("......invalid socket......\n"); return -1; } mysock_addr.sin_family = AF_INET; mysock_addr.sin_port = htons(local_port); mysock_addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); if ( SOCKET_ERROR == bind(localtcpsocket,(const struct sockaddr_in *)&mysock_addr,sizeof(mysock_addr)) ) { printf("bind error\n"); return -1; } if (listen(localtcpsocket,QUEUE_LEN) < 0) { printf("listen error\n"); return -1; } while (1) { char buffer[10240]; SOCKET recvsoc; struct sockaddr_in peerTcp; int len; recvsoc = accept(localtcpsocket,(const struct sockaddr_in *)&peerTcp,&len); if (recvsoc <= 0) { printf("accept error\n"); continue; } if ( strcmp(inet_ntoa(peerTcp.sin_addr),"0.0.0.0")) { printf("peer %s is connect to you\n",inet_ntoa(peerTcp.sin_addr)); if ( recv(recvsoc,buffer,sizeof(buffer),0) <= 0) { printf("recv error,maybe time exceed!\n"); } else { fprintf(stdout,"%s\n",buffer); Response2Client(recvsoc, peerTcp); } } } WSACleanup(); return 0; } void Response2Client(SOCKET socket, struct sockaddr_in peerTcp) { char res[1024] = "HTTP/1.1 200 OK\r\nContent-Length:35\r\n\r\n<html><body>Hello wyj!<input type=\"submit\" value=\"send me inf\" size=\"20\"></body></html>"; send(socket,res,sizeof(res),0); } void getsize(char a[100]) { printf("%d\n",sizeof(a)); return; } int main_test() { char ppp[]={0,0,0,0,0,0,0,0,0,0,0,0,3,'w','w','w',5,'b','a','i','d','u',3,'c','o','m',0,0,}; char *p = (char *)ppp + 12; int temp = 0; int first = 81; while(*p != 0) { int i = 0; if (!first) { printf("."); } temp = (int)*p; p++; for (;i<temp;i++) { printf("%c",p[i]); } p += temp; first = 0; } return 0; }