質問編集履歴

2

ソースコードの変更

2019/10/24 09:00

投稿

mmmw
mmmw

スコア23

test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,185 @@
32
32
 
33
33
  ```C++
34
34
 
35
+ VOID DisplayFrame( PBYTE pBuf, DWORD dwSize )
36
+
37
+ {
38
+
39
+ //TCP
40
+
41
+
42
+
43
+ char server_ip_addr[32];
44
+
45
+
46
+
47
+ int port_number;
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+ // Windows Sockets仕様に関する情報を格納する構造体
56
+
57
+
58
+
59
+ WSADATA wsa_data;
60
+
61
+
62
+
63
+ // WinSockの初期化処理(Version 2.0)
64
+
65
+
66
+
67
+ if (WSAStartup(MAKEWORD(2, 0), &wsa_data) != 0) {
68
+
69
+
70
+
71
+ std::cerr << "Winsockの初期化失敗(WSAStartup)" << std::endl;
72
+
73
+
74
+
75
+ }
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+ // ユーザ入力
84
+
85
+
86
+
87
+ std::cout << "接続先IPアドレスを入力してください(xxx.xxx.xxx.xxx)" << std::endl;
88
+
89
+
90
+
91
+ std::cin >> server_ip_addr;
92
+
93
+
94
+
95
+ std::cout << "ポート番号を入力してください" << std::endl;
96
+
97
+
98
+
99
+ std::cin >> port_number;
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+ // sockaddr_in構造体の作成とポート番号、IPタイプの入力
108
+
109
+
110
+
111
+ struct sockaddr_in dst_addr;
112
+
113
+
114
+
115
+ memset(&dst_addr, 0, sizeof(dst_addr));
116
+
117
+
118
+
119
+ dst_addr.sin_port = htons(port_number); // ポート番号
120
+
121
+
122
+
123
+ dst_addr.sin_family = AF_INET; // AF_INETはipv4を示す
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+ // 引数は (1) Type(ipv4 or v6) (2) IPアドレスのテキスト形式 (3) IPアドレスのバイナリ形式【(2)→(3)に変換】
132
+
133
+
134
+
135
+ inet_pton(dst_addr.sin_family, server_ip_addr, &dst_addr.sin_addr.s_addr);
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+ // AF_INETはipv4のIPプロトコル & SOCK_STREAMはTCPプロトコル
144
+
145
+
146
+
147
+ int dst_socket = socket(AF_INET, SOCK_STREAM, 0);
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+ // 接続処理
156
+
157
+
158
+
159
+ if (connect(dst_socket, (struct sockaddr *) &dst_addr, sizeof(dst_addr))) {
160
+
161
+
162
+
163
+ std::cerr << "接続失敗(サーバIPアドレス" << server_ip_addr << "/接続先ポート番号" << port_number << std::endl;
164
+
165
+
166
+
167
+ exit(0);
168
+
169
+
170
+
171
+ }
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+ std::cout << "接続完了(サーバIPアドレス" << server_ip_addr << "/接続先ポート番号" << port_number << std::endl << std::endl;;
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+ char send_buf1[256];
192
+
193
+
194
+
195
+ char recv_buf[256];
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+ TCHAR szFrame[200];
208
+
209
+ DWORD i = 0;
210
+
211
+
212
+
35
- while ( i<dwSize)
213
+ while ( i<dwSize)
36
214
 
37
215
  {
38
216
 
@@ -68,7 +246,9 @@
68
246
 
69
247
 
70
248
 
249
+
250
+
71
- //TCP
251
+ //TCP
72
252
 
73
253
 
74
254
 
@@ -102,6 +282,28 @@
102
282
 
103
283
  }
104
284
 
285
+
286
+
287
+ // 解放処理
288
+
289
+
290
+
291
+ closesocket(dst_socket);
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+ // WinSockの終了処理
300
+
301
+
302
+
303
+ WSACleanup();
304
+
305
+ }
306
+
105
307
  ```
106
308
 
107
309
 

1

書式の改善

2019/10/24 09:00

投稿

mmmw
mmmw

スコア23

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,36 @@
1
+ ### 前提・実現したいこと
2
+
3
+
4
+
5
+ visual C++ でソケット通信プログラムを作成中
6
+
7
+ // Packetの送信(SOCKET, Buffer, Datasize, 送信方法)にて
8
+
9
+   send_buf1[256] に pPno[5] を入れたところ,エラーメッセージが発生
10
+
11
+   send_buf1[256] に pPno[5] の値を格納したい
12
+
13
+
14
+
15
+
16
+
17
+ ### 発生している問題・エラーメッセージ
18
+
19
+
20
+
21
+ ```
22
+
23
+ Run-Time Check Failure #2 - Stack around the variable 'send_buf1'was corrupted.
24
+
25
+ ```
26
+
27
+
28
+
29
+ ### 該当のソースコード
30
+
31
+
32
+
1
- ```c++
33
+ ```C++
2
34
 
3
35
  while ( i<dwSize)
4
36
 
@@ -66,8 +98,24 @@
66
98
 
67
99
 
68
100
 
69
- i += shSize
101
+ i += shSize;
70
102
 
71
103
  }
72
104
 
73
105
  ```
106
+
107
+
108
+
109
+ ### 試したこと
110
+
111
+
112
+
113
+ FLOAT型からconst char型への変換などを試したが上手くいかなかった
114
+
115
+
116
+
117
+ ### 補足情報(FW/ツールのバージョンなど)
118
+
119
+
120
+
121
+ visual studio 2017