|
|
一个小的服务器端程序,编译通过,一运行就发生段错误,
在网上查了一下段错误的原因,还是没能搞明白,盼指教
- #include <stdio.h>
- #include <sys/types.h>
- #include <string.h>
- #include <sys/socket.h>
- #include <sys/time.h>
- #include <unistd.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <stdlib.h>
- #include <errno.h>
- #include <fcntl.h>
- #define MAX_LEN 1024
- int main(int argc ,char* argv[])
- {
- int sockfd;
- struct sockaddr_in servaddr;
- struct sockaddr_in cliaddr;
- const char *sendbuf = "hello world!";
- char recvbuf[MAX_LEN];
- int number_bytes;
- int servlen,clilen;
- int conn_ret;
- if((sockfd = socket(AF_INET,SOCK_DGRAM,0)) == -1){
- perror("sock");
- exit(1);
- }
- bzero(&servaddr,sizeof(servaddr));
- servaddr.sin_family = AF_INET;
- servaddr.sin_port = htons(atoi(argv[2]));
- inet_pton(AF_INET,argv[1],&servaddr.sin_addr);
- conn_ret = connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
- if(conn_ret == -1){
- perror("connect");
- exit(1);
- }
- if (send(sockfd,sendbuf,strlen(sendbuf),0)== -1){
- perror("sendto");
- exit(1);
- }
- if ((number_bytes = recv(sockfd,recvbuf,MAX_LEN-1,0))==-1){
- perror("recvbuf");
- exit(1);
- }else{
- recvbuf[number_bytes] = '\0';
- printf("client receives message:%s\n",recvbuf);
- }
- close(sockfd);
- return 0;
- }
复制代码 |
|