質問編集履歴

7

もうわけがわからん

2018/02/28 07:19

投稿

notgoodpg
notgoodpg

スコア37

test CHANGED
File without changes
test CHANGED
@@ -44,27 +44,47 @@
44
44
 
45
45
  // シリアル通信
46
46
 
47
- nRet = sc.Create();
47
+ // なぜかうまくいくコード
48
48
 
49
- nRet = sc.AsyncSelect(FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
49
+ //nRet = sc.Create();
50
50
 
51
- nRet = sc.Connect(_T("192.168.1.10"), 9000); // やってる事は同じはずなのにCAsyncSocketクラスそのままだとnRet==0になる
51
+ //nRet = sc.AsyncSelect(FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
52
52
 
53
+ //nRet = sc.Connect(_T("192.168.1.10"), 9000); // やってる事は同じはずなのにCAsyncSocketクラスそのままだとnRet==0になる
54
+
53
- if( nRet){
55
+ //if( nRet){
56
+
57
+ // return;
58
+
59
+ //}
60
+
61
+ //else {
62
+
63
+ // int hoge = WSAGetLastError(); // hoge == 10035となる。
64
+
65
+
66
+
67
+ // return;
68
+
69
+ //}
70
+
71
+
72
+
73
+ // 同じことしているはずなのに失敗するコード
74
+
75
+ if( !sc.Create()) return;
76
+
77
+ if( !sc.AsyncSelect(FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE)) return;
78
+
79
+ if( !sc.Connect(_T("192.168.1.10"), 9000){ // やってる事は同じはずなのにCAsyncSocketクラスそのままだとnRet==0になる
80
+
81
+ int hoge = WSAGetLastError(); // hoge == 10035となる。
54
82
 
55
83
  return;
56
84
 
57
85
  }
58
86
 
59
- else {
60
87
 
61
- int hoge = WSAGetLastError(); // hoge == 10035となる。
62
-
63
-
64
-
65
- return;
66
-
67
- }
68
88
 
69
89
  }
70
90
 

6

!((int)0)で1になるわけないわな・・・

2018/02/28 07:18

投稿

notgoodpg
notgoodpg

スコア37

test CHANGED
File without changes
test CHANGED
@@ -48,9 +48,15 @@
48
48
 
49
49
  nRet = sc.AsyncSelect(FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
50
50
 
51
- nRet = sc.Connect(_T("192.168.1.10"), 9000); // サンプルソリューションではnRet==1、自作ソリューションではnRet==0が返
51
+ nRet = sc.Connect(_T("192.168.1.10"), 9000); // やってる事は同じはずなにCAsyncSocketクラスそままだとnRet==0にな
52
52
 
53
- if( !nRet ){
53
+ if( nRet){
54
+
55
+ return;
56
+
57
+ }
58
+
59
+ else {
54
60
 
55
61
  int hoge = WSAGetLastError(); // hoge == 10035となる。
56
62
 

5

typo...

2018/02/28 06:57

投稿

notgoodpg
notgoodpg

スコア37

test CHANGED
File without changes
test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  int nRet;
42
42
 
43
- CASyncSocket sc;
43
+ CAsyncSocket sc;
44
44
 
45
45
  // シリアル通信
46
46
 

4

追記

2018/02/28 06:47

投稿

notgoodpg
notgoodpg

スコア37

test CHANGED
File without changes
test CHANGED
@@ -20,11 +20,23 @@
20
20
 
21
21
 
22
22
 
23
+ (追記依頼を受けて、出来るだけ追記)
24
+
25
+ ちなみに、サンプルではCASyncSocketを継承したクラスで接続を行っています。
26
+
27
+ といってもConnectなどのオーバーライドはせずOnConnectなどのイベント時の動作のみオーバーライドしています。
28
+
29
+ よって、該当のソースコードではCASyncSocketの関数が直接呼ばれています。
30
+
31
+
32
+
23
33
  ### 該当のソースコード
24
34
 
25
35
 
26
36
 
27
37
  ```c++
38
+
39
+ void CSerialDlg::OnButton1(){
28
40
 
29
41
  int nRet;
30
42
 
@@ -48,6 +60,8 @@
48
60
 
49
61
  }
50
62
 
63
+ }
64
+
51
65
  ```
52
66
 
53
67
  ### 試したこと

3

サンプルが載せられない旨追記

2018/02/28 06:46

投稿

notgoodpg
notgoodpg

スコア37

test CHANGED
File without changes
test CHANGED
@@ -11,6 +11,10 @@
11
11
  サンプルコード通りに接続を完了させるために何が不足なのか分かりません。
12
12
 
13
13
 
14
+
15
+ なおサンプルは諸事情で貼り付けられません。
16
+
17
+ 具体性を欠く質問になってしまい申しわけありませんがお知恵を貸していただければ幸いです。
14
18
 
15
19
  よろしくお願いいたします。
16
20
 

2

ソースコードがおかしかったので修正

2018/02/28 06:43

投稿

notgoodpg
notgoodpg

スコア37

test CHANGED
File without changes
test CHANGED
@@ -28,9 +28,9 @@
28
28
 
29
29
  // シリアル通信
30
30
 
31
- nRet = m_cSocket.Create();
31
+ nRet = sc.Create();
32
32
 
33
- nRet = m_cSocket.AsyncSelect(FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
33
+ nRet = sc.AsyncSelect(FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
34
34
 
35
35
  nRet = sc.Connect(_T("192.168.1.10"), 9000); // サンプルのソリューションではnRet==1、自作のソリューションではnRet==0が返る
36
36
 

1

質問の内容を更新

2018/02/28 06:11

投稿

notgoodpg
notgoodpg

スコア37

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ですが`CASyncSocket::Connect`関数の返り値は0(==FALSE)で`WSAGetLastError`でエラーコードを取得すると`10035`が得られました。
8
8
 
9
- この動作自体は当然のようなのですが、すでにあるサンプルコードでは`Connect`の返り値が1です。
9
+ この動作自体は[当然らしい](https://oshiete.goo.ne.jp/qa/1406750.html)のですが、すでにあるサンプルコードでは`Connect`の返り値が1です。
10
10
 
11
11
  サンプルコード通りに接続を完了させるために何が不足なのか分かりません。
12
12