以下のサイトを見ながらコードを書いたのですが、コンパイルすると
sock = accept(sock0, (struct sockaddr *)&clinet, &len);
の行で警告が出ます。その警告文を以下にのせます。
socket_sample1.c:28:51: warning: passing 'int *' to parameter of type
'socklen_t *' (aka 'unsigned int *') converts between pointers to integer
types with different sign [-Wpointer-sign]
sock = accept(sock0, (struct sockaddr *)&client, &len);
^~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/S
DKs/MacOSX10.11.sdk/usr/include/sys/socket.h:580:69: note:
passing argument to parameter here
int accept(int, struct sockaddr * __restrict, socklen_t * __restrict)
^
1 warning generated.
どうやらaccept関数の第3引数の型が違うということらいしいです。
ですが、他のサイトのaccept関数の使い方を見てみると今回のせたコードと同じ使用法だったので質問させてもらいました。
c
1#include<stdio.h> 2#include<sys/types.h> 3#include<sys/socket.h> 4#include<netinet/in.h> 5#include<unistd.h> 6 7int main() { 8 int sock0; 9 struct sockaddr_in addr; 10 struct sockaddr_in client; 11 int len; 12 int sock; 13 14 /*ソケットの作成*/ 15 sock0 = socket(AF_INET, SOCK_STREAM, 0); 16 17 /*ソケットの設定*/ 18 addr.sin_family = AF_INET; 19 addr.sin_port = htons(12345); 20 addr.sin_addr.s_addr = INADDR_ANY; 21 bind(sock0, (struct sockaddr*)&addr, sizeof(addr)); 22 23 /*TCPクライアントからの接続要求を待てる状態にする*/ 24 listen(sock0, 5); 25 26 /*TCPクライアントからの接続要求を受け付ける*/ 27 let = sizeof(client); 28 sock = accept(sock0, (struct sockaddr *)&client, &len); 29 30 //文字列の送信 31 write(sock, "HELLO", 5); 32 33 /*TCPセッションの終了*/ 34 close(sock); 35 36 /*listenするsocketの終了*/ 37 close(sock0); 38 39 return 0; 40} 41
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/21 07:45