【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.20562

winsockネットワークプログラミング
投稿者---森田(2005/04/05 16:50:34)


今、chatのサーバー側のプログラムを作っているのですが、外部シンボルエラーがでて先に進めません。開発環境は、VC++6.0でWinsockを使用しています。
どなたか、解決方法をお願いします。

#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()
{
SOCKET listen_s, s;
WSADATA wsaData;
SOCKADDR_IN saddr, from;
char szBuf[1024];
int fromlen, nRcv;
u_short uport;

printf("使用するポート番号--->");
gets(szBuf);
uport = atoi(szBuf);//atoi:文字列を数値に変換



if(WSAStartup(MAKEWORD(1, 1), &wsaData)){
printf("Error\n");
WSACleanup();
return-1;
}


listen_s = socket(AF_INET, SOCK_STREAM, 0);
if(listen_s < 0){
printf("ソケットオープンエラー\n");
WSACleanup();
return-2;
} else {
printf("ソケットオープンしました\n");
}

memset(&saddr, 0, sizeof(SOCKADDR_IN));
saddr.sin_family = AF_INET;
saddr.sin_port = htons(uport);
saddr.sin_addr.s_addr = INADDR_ANY;

if(bind(listen_s,(struct sockaddr *)&saddr,sizeof(saddr)) == SOCKET_ERROR){
printf("bind Error");
closesocket(listen_s);
WSACleanup();
return -3;
} else{
printf("bind関数成功です\n");
}

if(listen(listen_s, 0) ==SOCKET_ERROR){
printf("listen Error\n");
closesocket(listen_s);
WSACleanup();
return -4;
} else{
printf("listen関数成功です\n accept関待機で待機します\n");
}

fromlen =(int)sizeof(from);
s = accept(listen_s, (SOCKADDR *)&from, &fromlen);
if(s == INVALID_SOCKET){
printf("accept error");
closesocket(listen_s);
WSACleanup();
return -5;
} else{
printf("%sが接続してきました\n", inet_ntoa(from.sin_addr));
printf("accept関数成功です\n会話に入ります\n\n");
}

closesocket(listen_s);

while(1){
printf("受信待機中\n");
nRcv = recv(s, szBuf, sizeof(szBuf) -1, 0);

if(nRcv == SOCKET_ERROR){
printf("recvエラー\n");
break;
}
printf("受信-->%s\n", szBuf);
printf("送信-->");
gets(szBuf);
if(strcmp(szBuf, "s_end") == 0){
send(s, szBuf, (int)strlen(szBuf), 0);
break;
}

send(s, szBuf, (int)strlen(szBuf), 0);
}
closesocket(s);
WSACleanup();

printf("サーバー終了\n");
_getch();

return 0;
}

エラー文
リンク中...
main.obj : error LNK2001: 外部シンボル "_send@16" は未解決です
main.obj : error LNK2001: 外部シンボル "_recv@16" は未解決です
main.obj : error LNK2001: 外部シンボル "_inet_ntoa@4" は未解決です
main.obj : error LNK2001: 外部シンボル "_accept@12" は未解決です
main.obj : error LNK2001: 外部シンボル "_listen@8" は未解決です
main.obj : error LNK2001: 外部シンボル "_closesocket@4" は未解決です
main.obj : error LNK2001: 外部シンボル "_bind@12" は未解決です
main.obj : error LNK2001: 外部シンボル "_htons@4" は未解決です
main.obj : error LNK2001: 外部シンボル "_socket@12" は未解決です
main.obj : error LNK2001: 外部シンボル "_WSACleanup@0" は未解決です
main.obj : error LNK2001: 外部シンボル "_WSAStartup@8" は未解決です
Debug/chat.exe : fatal error LNK1120: 外部参照 11 が未解決です。
link.exe の実行エラー 




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:winsockネットワークプログラミング 20564 nop 2005/04/05 16:56:46
<子記事> Re:winsockネットワークプログラミング 20566 RiSK 2005/04/05 16:59:46
<子記事> Re:winsockネットワークプログラミング 20567 もぐりん 2005/04/05 17:00:50
<子記事> Re:winsockネットワークプログラミング 20568 森田 2005/04/05 18:03:15


No.20564

Re:winsockネットワークプログラミング
投稿者---nop(2005/04/05 16:56:46)


>どなたか、解決方法をお願いします。

WinSockのライブラリがリンクされていないからでしょう。
ライブラリをリンクして下さい。

※リンクするライブラリや、リンクの方法などはご自分で調査して下さい。


この投稿にコメントする

削除パスワード

No.20566

Re:winsockネットワークプログラミング
投稿者---RiSK(2005/04/05 16:59:46)


Library Link to Ws2_32.lib.
だそうです。


この投稿にコメントする

削除パスワード

No.20567

Re:winsockネットワークプログラミング
投稿者---もぐりん(2005/04/05 17:00:50)


> エラー文
> リンク中...
> main.obj : error LNK2001: 外部シンボル "_send@16" は未解決です
> main.obj : error LNK2001: 外部シンボル "_recv@16" は未解決です
> main.obj : error LNK2001: 外部シンボル "_inet_ntoa@4" は未解決です
> main.obj : error LNK2001: 外部シンボル "_accept@12" は未解決です
> main.obj : error LNK2001: 外部シンボル "_listen@8" は未解決です
> main.obj : error LNK2001: 外部シンボル "_closesocket@4" は未解決で> す
> main.obj : error LNK2001: 外部シンボル "_bind@12" は未解決です
> main.obj : error LNK2001: 外部シンボル "_htons@4" は未解決です
> main.obj : error LNK2001: 外部シンボル "_socket@12" は未解決です
> main.obj : error LNK2001: 外部シンボル "_WSACleanup@0" は未解決です
> main.obj : error LNK2001: 外部シンボル "_WSAStartup@8" は未解決です
> Debug/chat.exe : fatal error LNK1120: 外部参照 11 が未解決です。
> link.exe の実行エラー

エラーの内容からしてそれぞれ使用している関数の定義ファイルがインクルード
されていないのでは?



この投稿にコメントする

削除パスワード

No.20568

Re:winsockネットワークプログラミング
投稿者---森田(2005/04/05 18:03:15)


みなさん、ありがとうございました。
無事にリンクしエラーを無くすことができました。
ほんとうにありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧