- 论坛徽章:
- 0
|
Server:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 9999
#define BUFFERSIZE 1024
int main(void)
{
int serfd, clifd;
struct sockaddr_in ser_addr, cli_addr;
socklen_t clilen;
int fd;
char buf[BUFFERSIZE];
char str[INET_ADDRSTRLEN];
if((serfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
perror("Socket Faild!");
exit(1);
}
bzero(&ser_addr, sizeof(ser_addr));
ser_addr.sin_family = AF_INET;
ser_addr.sin_addr.s_addr = htonl(INADDR_ANY);
ser_addr.sin_port = htons(PORT);
if(bind(serfd, (struct sockaddr *)&ser_addr, sizeof(ser_addr)) < 0)
{
perror("Bind Faild!");
exit(1);
}
printf("Socket Created! \n");
if(listen(serfd, 20) < 0)
{
perror("Listen Faild!");
exit(1);
}
printf("Listen \n");
while(1)
{
clilen = sizeof(cli_addr);
if((clifd = accept(serfd, (struct sockaddr *)&cli_addr, &clilen)) < 0)
{
perror("Accept Faild!");
exit(1);
}
fd = read(clifd, buf, 1024);
printf("Received from %s at PORT %d \n",
inet_ntop(AF_INET, &cli_addr.sin_addr, str, sizeof(str)),
ntohs(cli_addr.sin_port));
printf("=============");
write(clifd, buf, fd);
close(clifd);
}
return 0;
} |
Client:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 9999
#define BUFFERSIZE 1024
int main(void)
{
struct sockaddr_in ser_addr;
int sockfd;
char *str = "这个是一个消息,能收到么?";
char buf[BUFFERSIZE];
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
perror("Sock Faild!");
exit(1);
}
bzero(&ser_addr, sizeof(ser_addr));
ser_addr.sin_family = AF_INET;
ser_addr.sin_addr.s_addr = htonl(INADDR_ANY);
ser_addr.sin_port = htons(PORT);
printf("Socket \n");
if(connect(sockfd, (struct sockaddr *)&ser_addr, sizeof(ser_addr)) < 0)
{
perror("Connect Faild~!");
exit(1);
}
write(sockfd, str, 1024);
printf("Send Msg for Server! \n");
sleep(1);
read(sockfd, buf, strlen(buf));
printf("Recive Form Server \n");
close(sockfd);
return 0;
} |
出现段错误。
请指出错误的原因及怎么修改 ,谢谢。。
|
|