私は unix でのプログラミングはまったく初めてで、クライアントおよびサーバー プログラミング用に次のコードを作成しました。クライアント コードを実行しようとすると、「接続が拒否されました」と表示されます。何が原因なのか誰か教えてください。
サーバーコード:
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include <errno.h>
#include<string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(void)
{
int sockid,newsockid;
socklen_t addr_size;
char *msg="What a beautiful morning!";
int len, bytes_sent;
sockid=socket(AF_INET,SOCK_STREAM,0);
if(sockid==-1)
{
perror("socket");
exit(1);
}
else
printf("created");
struct sockaddr_in serveraddr,clientaddr;
bzero((char *)&serveraddr,sizeof(serveraddr));
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(7400);
serveraddr.sin_addr.s_addr=INADDR_ANY;
if(bind(sockid,(struct sockaddr *)&serveraddr,sizeof(serveraddr))<0)
{
perror("bind");
return -1;
}
listen(sockid,5);
addr_size=sizeof(clientaddr);
newsockid=accept(sockid,(struct sockaddr *)&clientaddr,&addr_size);
len = strlen(msg);
bytes_sent = send(sockid, msg, len, 0);
close(sockid);
}
クライアントコード:
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include <errno.h>
#include<string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(void)
{
int byte_count;
struct sockaddr_in serveraddr;
char *servername;
char buf[256];
socklen_t addr_size;
int sockfd;
sockfd=socket(AF_INET,SOCK_STREAM,0);
bzero(&serveraddr,sizeof(serveraddr));
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(11378);
servername=gethostbyname("localhost");
inet_pton(AF_INET,servername,&serveraddr.sin_addr);
addr_size=sizeof(serveraddr);
if(connect(sockfd,(struct sockaddr *)&serveraddr,addr_size)==-1)
{
perror("connect");
exit(1);
}
byte_count = recv(sockfd, buf, sizeof buf, 0);
printf("recv()'d %d bytes of data in buf\n", byte_count);
close(sockfd);
}
早めの助けをいただければ幸いです。ありがとう。