単純なUNIXソケットプログラムを作成しようとすると、いくつかのエラーが発生します。これまでのところ、私はサーバープログラムを動作させています。私は、クライアントがサーバープログラムにメッセージを繰り返し送信できるようにするプログラムを作成しようとしています。サーバーはそれを表示します。私はこれをテストするために開いている2つのコンパイラウィンドウがあります。ヘッダーファイルやUNIX固有のものに関連すると思われるエラーが発生しています。私は "sin_addr"(unix用)の代わりに "sun_addr"を使ってみましたが、うまくいきませんでした。エラー:struct sockaddr_un 'に' sun_port 'という名前のメンバーがありません
エラー...(EDITED FOR "UN" AND NOT "IN" へのすべての変更した後に)
error:'struct sockaddr_un' has no member named 'sun_port'
コード...
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/un.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
#define LEN 256
#define SOCKET_NAME "client_socket"
int main(void)
{
char message[LEN];
int sock;
struct sockaddr_un server_socket;
char server_reply[LEN];
//create af_unix/socket stream w/call to socket func
sock = socket(AF_UNIX , SOCK_STREAM , 0);
if(sock == -1)
{
perror("Could not create socket");
}
puts("Socket created");
//errors and warnings here...
server_socket.sun_family = AF_UNIX;
server_socket.sun_port = htons(8888);//or use sun_path?
if(connect(sock ,(struct sockaddr *)&server_socket, sizeof(server_socket))
<0)
{
perror("Connect failed.");
return 1;
}
puts("Connected\n");
while(1)
{
printf("Enter message : ");
scanf("%s" , message);
//Send some data
if(send(sock , message , strlen(message) , 0) < 0)
{
puts("Send failed");
return 1;
}
//Receive a reply from the server
if(recv(sock , server_reply , 2000 , 0) < 0)
{
puts("recv failed");
break;
}
puts("Server reply :");
puts(server_reply);
}
close(sock);
return 0;
}
を見ることができますか? – Gerhardh
sockaddr_inにsockaddr_inを誤って入力しましたか? –
UNIXソケットはネットワークソケットではありません。 – tofro