- 论坛徽章:
- 0
|
- #include<stdio.h>
- #include "tcpnc.h"
- #define BACKLOG 10
- #define STDIN 0
- int main(int argc,char *argv[])
- {
- FILE *fp;
- char buf[296]; //packet buffer
- char buff[256]; //account buffer
- char send_str[256]; //the content of sending
- char *str;
- int recvbytes;
- int sockfd,client_fd;
- fd_set rfd_set,wfd_set,efd_set;
- struct timeval timeout;
- int ret;
- if((sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_TCPNC))<0)
- {
- printf("socket error!");
- exit(1);
- }
- struct sockaddr_in my_addr,remote_addr;
- int sin_size;
- memset(&my_addr,0,sizeof(my_addr));
- //bzero(&my_addr,sizeof(struct sockaddr_in));
- my_addr.sin_family=AF_INET;
- my_addr.sin_port=htons(SERVERPORT);
- //my_addr.sin_addr.s_addr=htonl(INADDR_ANY);
- inet_aton("127.0.0.1",&my_addr.sin_addr);
- //my_addr.sin_addr.s_addr=inet_addr("200.200.30.42");
- const int on=1;
- if(setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on))==-1)
- {
- printf("setsockopt error!");
- exit(0);
- }
- sin_size=sizeof(my_addr);
- if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
- {
- printf("bind error!");
- exit(1);
- }
- int lis=listen(sockfd,BACKLOG);
- if(lis==-1)
- {
- printf("listen error!");
- exit(1);
- }
- if((client_fd=accept(sockfd,(struct sockaddr *)&remote_addr,&sin_size))==-1)
- {
- printf("accept error!");
- exit(1);
- }
复制代码 代码运行出来,显示listen error!是不是由于raw socket不能够进行bind,listen啊?还是什么原因阿?求知道一下。主要是想做一个对tcp协议进行改进的私有协议,大家有没有好的方法阿,用原始套接字可以实现吗? |
|