- 论坛徽章:
- 0
|
本帖最后由 liuchang8877 于 2012-07-19 17:01 编辑
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<errno.h>
- #include<sys/types.h>
- #include<sys/socket.h>
- #include<netinet/in.h>
- #define MAXLINE 4096
- int main(int argc,char **argv)
- {
- int listenfd, connfd;
- struct sockaddr_in servaddr,cliaddr;
- char buff[MAXLINE];
- int n;
- if((listenfd = socket(AF_INET,SOCK_STREAM,0)) == -1){
- printf("create socket error: %s(errno: %d)\n", strerror(errno),errno);
- exit(0);
- }
- memset(&servaddr,0,sizeof(servaddr));
- servaddr.sin_family = AF_INET;
- servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
- servaddr.sin_port = htons(20000);
- if( bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) == -1){
- printf("bind socket error: %s(errno: %d)\n",strerror(errno),errno);
- exit(0);
- }
- if(listen(listenfd,10) == -1){
- printf("listen socket error:%s(errno:%d)\n",strerror(errno),errno);
- exit(0);
- }
- socklen_t length = sizeof(cliaddr);
- printf("======waiting for client's request ======= \n");
- while(1){
- if( (connfd = accept(listenfd,(struct sockaddr*)&cliaddr,&length)) == -1 ){
- printf("accept socket error:%s(errno: %d)",strerror(errno),errno);
- continue;
- }
- /* show the child */
- printf("from client ,IP:%s,PORT:%d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
- memset(&buff,'1',MAXLINE);
- /*send data*/
- int size_sockaddr = sizeof(struct sockaddr_in);
- int i;
- while(1){ //此处达到了循环写入的效果,但是怎可控制写入的速度? 用sleep()/??
- for( i = 0; i < 100; i++)
- sendto(connfd,buff,MAXLINE,0,(struct sockaddr*)&servaddr,size_sockaddr);
- }
- // close(connfd);
- /*
- n = recv(connfd,buff,MAXLINE,0);
- buff[n] = '\0';
- printf("recv msg from client: %s\n",buff);
- close(connfd);*/
- }
- close(connfd);
- close(listenfd);
- }
-
复制代码 //这是服务端 发送 程序,怎么控制它的发送速率?
|
|