?? tcpserver.c
字號(hào):
/* fpont 1/00 *//* pont.net *//* tcpServer.c */#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <stdio.h>#include <unistd.h> /* close */#include <sys/stat.h>#include <fcntl.h>#define SUCCESS 0#define ERROR 1#define END_LINE 0x0#define SERVER_PORT 1500#define MAX_MSG 1024/* function readline */int read_line();int main (int argc, char *argv[]) { int sd, newSd, cliLen, n; int fd; struct sockaddr_in cliAddr, servAddr; char line[MAX_MSG]; /* create socket */ sd = socket(AF_INET, SOCK_STREAM, 0); if(sd<0) { perror("cannot open socket "); return ERROR; } /* bind server port */ servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = htonl(INADDR_ANY); servAddr.sin_port = htons(SERVER_PORT); if(bind(sd, (struct sockaddr *) &servAddr, sizeof(servAddr))<0) { perror("cannot bind port "); return ERROR; } listen(sd,5); fd=open("rcv.mpg",O_WRONLY|O_CREAT|O_APPEND);
if(fd==-1)
{ printf("cannot creat file %s",argv[1]);
exit(1);
} while(1) { printf("%s: waiting for data on port TCP %u\n",argv[0],SERVER_PORT); cliLen = sizeof(cliAddr); newSd = accept(sd, (struct sockaddr *) &cliAddr, &cliLen); if(newSd<0) { perror("cannot accept connection "); return ERROR; } /* init line */ memset(line,0x100,MAX_MSG); /* receive segments */ while(1) { n = recv(newSd, line, MAX_MSG, 0); write(fd,line,n); if(n!=MAX_MSG){ printf("file recieved as 'rcv.mpg'\n"); break; } } /* while(read_line) */ } /* while (1) */close(fd);return 0;}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -