
いつも拝見させていただいております。
このたびは、皆様のお知恵をお借りしたく質問させていただきました。
ソケット通信を行いたく、以下のサンプルを作成いたしました。
この関数を5回ループさせると、エラーが起きてしまいます。
エラーコードは10061です。
解決方法をご存知の型が降りましたら、
ご教授ください。
よろしくお願いいたします。
(VC++での開発です)
extern "C" __declspec( dllexport ) bool __stdcall ssl_SockOpen(LPSTR p_c_IpAddress, LPSTR p_c_PortNum)
{
struct sockaddr_in addr;//socketの情報を代入する構造体
WSADATA p_obj_SockInit;//Windows Sockets初期化変数
//■ Windows Socketsを初期化する
WSAStartup( 0x0101, &p_obj_SockInit );
//■ ソケット確保
if( (g_obj_Socket = socket( AF_INET, SOCK_STREAM, 0 )) < 0 ){
pMsg = "ソケットの確保に失敗しました。";
return false;
}
//■ ソケットの情報を入れる
memset( &addr, 0, sizeof( addr ) );//構造体addrの初期化
addr.sin_family = AF_INET;//AF_INETを指定
addr.sin_port = htons( atoi( p_c_PortNum ) );//ポートを指定
addr.sin_addr.s_addr = inet_addr( p_c_IpAddress );//inet_addr()により指定されたIPを構造体に代入
//■ 接続要求を行う▼▼▼▼ここでエラー!!▼▼▼▼
if( connect( g_obj_Socket, (struct sockaddr *)&addr, sizeof(addr) ) < 0 ){
pMsg = "接続要求に失敗しました。";
int i;
i = GetLastError( );
return false;
}
return( true );
}
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
たの方もおっしゃっている事ですが気になる点がいくつかあります。
1.WSAStartupの呼び出しは1度だけ。
2回以上呼び出す時はWSACleanupの後で行う。
2.WSACleanupの呼び出しが無い。
3.shutdown,closesocketの呼び出しが無い。
4.GetlastErrorはWSAGetLastErrorをラッピングしているものと考えてよいのか?
通常、TCP/IP通信のクライアント側の流れは以下のようになります。
1.初期化(WSAStartup)
2.ServerのIPアドレス解決(gethosybyname,gethostbyaddr)
3.サービスポート解決(getportbyname)
4.ソケット生成(socket)
5.接続確立(connect)
6.データ通信のループ(send,recv)
7.切断準備(shutdown)
8.切断、ソケット廃棄(closesocket)
9.WSACleanup
今回の質問の場合、2,3は直接指定しているのでOKでしょう。
7は必須ではありませんが「お行儀の良い切断」を行う為に推奨されます。
接続を複数回繰り返すのであれば2~8をループさせます。
No.4
- 回答日時:
ソケットエラーの10061は接続を拒否されたエラーだそうです。
MSDNの検索で数値をいれて検索してね。
サーバー側が同時に接続できる数を超えて繋ごうとしてるんじゃないかなー
No.3
- 回答日時:
エラーコードの示す通り、本当に接続が拒否されているのではないですか?
例えば相手方がNTWorkstationで、最大接続数を越えてるとか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux raspberry piを使ったWebサーバー制作をしています、接続するネットワークを変更したときに 1 2023/01/09 15:57
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- 英語 This paper focuses on the literature relevant to t 2 2022/12/02 09:41
- 英語 Further pooled estimate of proportion of survival 2 2022/07/09 20:16
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Connectエラーが出てしまう・・...
-
ソケットのクローズについて
-
UDPを使って帯域測定プログラム...
-
TCP/IP通信時のサーバーからの受信
-
UDP通信する時に、相手にどうや...
-
Socket通信の0バイト受信について
-
recv関数でフリーズしてしまう
-
PerlでSocketを閉じずに再利用...
-
closeされたsocketへの動作につ...
-
VB6のwinsockでconnectできない
-
MFCソケットについて
-
メールサーバへの接続タイムア...
-
read()メソッドを使ったループ...
-
同じLAN内パソコンのIPアドレス...
-
クライアントサーバ型アプリ製...
-
UdpClient 送信元のIPアドレ...
-
ソケット通信のシミュレータツ...
-
winsockのポート指定について
-
VB6‥ソケットについて
-
VC++でのソケット通信について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
UDP通信におけるbind関数について
-
Winsockで接続待ちタイムアウト...
-
UDP通信する時に、相手にどうや...
-
エクセル VBA でのCOMポート...
-
Socket通信の0バイト受信について
-
VB6のwinsockでconnectできない
-
ソケットでクライアントのipア...
-
ソケットを用いた1対多通信につ...
-
ソケットのクローズについて
-
ソケットのrecvの戻り値が0
-
UdpClient 送信元のIPアドレ...
-
相手のIPアドレスを取得する方法
-
recv関数でフリーズしてしまう
-
closeされたsocketへの動作につ...
-
送信したデータの一部が文字化...
-
UDP通信(SNMP)したいが、うま...
-
ソケット通信
-
Connectエラーが出てしまう・・...
-
WinSockでの通信プログラムがう...
おすすめ情報