- 论坛徽章:
- 0
|
server到listen 一切正常,client 到 connect 就显示fail。可以ping通 127.0.0.1 请各路大神帮忙看看。- /* client */
- #include<string.h>
- #include<iostream>
- #include<sys/types.h>
- #include<sys/socket.h>
- #include<stdlib.h>
- #include<netinet/in.h>
- #include<sys/time.h>
- #include<arpa/inet.h>
- #include<unistd.h>
- #include<sys/select.h>
- #define PORT 6000
- #define MAX_SIZE 1420
- using namespace std;
- void seconds_sleep(unsigned seconds){
- struct timeval tv;
- int errno;
- tv.tv_sec=seconds;
- tv.tv_usec=0;
- int err;
- do{
- err=select(0,NULL,NULL,NULL,&tv);
- }while(err<0 && errno==0);
- }
- int main()
- {
- int confd;
- int recbytes;
- socklen_t sin_size;
- char send_buff[MAX_SIZE] = {0};
- char recv_buff[MAX_SIZE] = {0};
- char ntoa;
- struct sockaddr_in s_add , c_add ;
- timeval *begin;
- cout<<"Client start."<<endl;
- strcpy (send_buff,"Hi,I am mark. ");
- if ( confd = socket( AF_INET , SOCK_STREAM , 0) == -1 ) // create socket
- {
- cout<<"Socket fail!"<<endl;
- return -1;
- }
- cout<<"Socket OK!"<<endl;
-
- bzero( &s_add , sizeof(struct sockaddr_in)); // init s_add
- s_add.sin_family = AF_INET ;
- s_add.sin_addr.s_addr = inet_addr("127.0.0.1");
- // ntoa = (s_add.sin_addr);
- s_add.sin_port = htons(PORT);
- cout<<"s_addr = "<<s_add.sin_addr.s_addr<<",port:"<<s_add.sin_port<<endl;
- if (-1 == connect( confd , (struct sockaddr *)(&s_add),sizeof(struct sockaddr)))// connect
- {
- cout<<"connect fail!"<<endl;
- return -1;
- }
- cout<<"Connected!"<<endl;
- if ( -1 == send( confd , send_buff , MAX_SIZE , 0 ) ) // send
- {
- cout<<"Send fail!"<<endl;
- return -1;
- }
- if ( -1 == recv( confd , recv_buff , MAX_SIZE , 0 ) ) // recv
- {
- cout<<"recv fail!"<<endl;
- return -1;
- }
- recv_buff[MAX_SIZE-1] ='\0';
- cout<<"recv msg :"<<recv_buff<<endl; // output recv msg
-
-
- close(confd);
- return 0;
- }
复制代码- /* server */
- #include<string.h>
- #include<iostream>
- #include<sys/types.h>
- #include<sys/socket.h>
- #include<stdlib.h>
- #include<netinet/in.h>
- #include<sys/time.h>
- #include<unistd.h>
- #include<arpa/inet.h>
- #define PORT 6000
- #define MAX_SIZE 1420
- #define back_log 1000 //max linking number
- using namespace std;
- int main()
- {
- int listenfd,confd; // sockfd
- struct sockaddr_in s_add,c_add;
- socklen_t sin_size;
- timeval *server_time;
- char send_buff[MAX_SIZE] = {0};
- char recv_buff[MAX_SIZE] = {0};
- strcpy(send_buff,"Welcome to mark's server!");
-
- if ( (listenfd = socket(AF_INET,SOCK_STREAM,0)) == -1 )// create socket
- {
- cout<<"Socket fail!"<<endl;
- return -1;
- }
- cout << "Socket OK!"<<endl;
- bzero(&s_add,sizeof(sockaddr_in));
- s_add.sin_family = AF_INET;// IPV4
- s_add.sin_port = htons(PORT);
- s_add.sin_addr.s_addr = htonl(INADDR_ANY);//
- // s_add.sin_addr.s_addr = inet_addr("0.0.0.0");//
- if (-1 == bind( listenfd , (struct sockaddr*)(&s_add) , sizeof(struct sockaddr)))// bind
- {
- cout<<"Bind port fail!"<<endl;
- return -1;
- }
- cout<<"Bind port succeed!"<<endl;
- if (-1 == listen( listenfd , back_log ) )// listen
- {
- cout<<"Listen fail!"<<endl;
- return -1;
- }
- cout<<"Listen OK!"<<endl;
- // cout<<"s_addr = "<<s_add.sin_addr.s_addr<<",port:"<<s_add.sin_port<<endl;
- while (true)
- {
- sin_size = sizeof(struct sockaddr_in);
- if ( ( confd = accept( listenfd , (struct sockaddr*)(&c_add) ,&sin_size )) == -1 )
- {
- cout<<"Accept fail!"<<endl;
- return -1;
-
- cout<<"Accepted!"<<endl;
- cout<<"connection from:"<<ntohl(c_add.sin_addr.s_addr)<<" port:"<<ntohs(c_add.sin_port)<<endl;
- gettimeofday(server_time,NULL);
- cout<<"Now time is:"<<server_time->tv_sec<<"s "<<server_time->tv_usec<<"us"<<endl;
- while (-1 != recv(confd,recv_buff,MAX_SIZE,0))
- {
- send(confd,send_buff,MAX_SIZE,0);
- recv_buff[MAX_SIZE-1] = '\0';
- cout<<"recv msg:"<<recv_buff<<endl;
- }
- }
- close(confd);
- }
- }
复制代码 |
|