誰か分かる方がいらっしゃいましたらプログラム文の記述をお願いします。
実行例が
*server*
1:ソケット生成成功
2:バインド成功
3:接続待機成功
4:接続受付成功
5:文字列送信成功
6:文字列受信成功: hello server!!
*client*
1:ソケット生成成功
2:サーバ接続成功
3:文字列受信成功: hello client
4:文字列送信成功
になるようにします。
今、記述しているプログラム文が下記の通りですが追加箇所以外にも間違いが御座いましたらご指摘お願いします。
//client側
#include<sys/socket.h>
#include<arpa/inet.h>
#include<sys/socket.h>
#include<unistd.h>
int main(void){
int sockfd;
struct sockaddr_in servaddr;
int connfd;
int buff;
//ソケットの生成
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0){
perror("ソケット生成失敗");
exit(1);
}
else{
printf("1:ソケット生成成功\n");
}
//ソケットの設定
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(9000);
servaddr.sin_addr.s_addr=inet_addr("アドレス");
//サーバへの接続
connfd=connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
if(connfd<0){
perror("サーバ接続失敗");
exit(1);
}
else{
printf("2:サーバ接続成功\n");
}
//↓メッセージの送受信(多分ここがプログラム文の追加箇所)↓
//↑ここまで↑
//ソケットを閉じる
close(sockfd);
return 0;
}
//server側
#include<sys/socket.h>
#include<arpa/inet.h>
int main(void){
int sockfd;
struct sockaddr_in servaddr;
int connfd;
int len;
int cliaddr;
//ソケットの生成
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0){
perror("ソケット生成失敗");
exit(1);
}
else{
printf("1:ソケット生成成功\n");
}
//ソケットの設定
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(9000);
servaddr.sin_addr.s_addr = INADDR_ANY;
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, NULL, 0);
// ソケットに名前をつける
if(bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){
perror("バインド失敗");
exit(1);
}
else{
printf("2:バインド成功\n");
}
// 接続を待ち受ける
if(listen(sockfd, 5) < 0){
perror("接続待機失敗");
exit(1);
}
else{
printf("3:接続待機成功\n");
}
// 接続要求を受け付ける
len = sizeof(cliaddr);
connfd = accept(sockfd, (struct sockaddr *)&cliaddr, (socklen_t *)&len);
if(connfd < 0){
perror("接続受付失敗");
exit(1);
}
else{
printf("4:接続受付成功\n");
}
//↓メッセージの送受信(多分ここがプログラム文の追加箇所)
//↑ここまで↑
// ソケットを閉じる
close(sockfd);
return 0;
}