回答編集履歴

4

修正

2016/10/28 06:15

投稿

hiim
hiim

スコア1689

test CHANGED
@@ -1,6 +1,4 @@
1
- どちらもクライアントになってないですか?
2
-
3
- C言語の方をwinsockを使ってサーバーにする場合は
1
+ まずC言語の方サーバーとして機能していません。
4
2
 
5
3
  ソケットを作ってbindしてlistenしないといけません。
6
4
 

3

追記

2016/10/28 06:15

投稿

hiim
hiim

スコア1689

test CHANGED
@@ -29,3 +29,57 @@
29
29
 
30
30
 
31
31
 
32
+
33
+ 追記
34
+
35
+
36
+
37
+ 参考に貼ったURLにあるサーバーのソースの
38
+
39
+
40
+
41
+ ```c
42
+
43
+ // ソケットの作成
44
+
45
+ sock0 = socket(AF_INET, SOCK_STREAM, 0);
46
+
47
+ ```
48
+
49
+ でlisten用のソケットを作って(接続要求を待つ用のもの)
50
+
51
+
52
+
53
+ ```c
54
+
55
+ bind(sock0, (struct sockaddr *)&addr, sizeof(addr));
56
+
57
+
58
+
59
+ // TCPクライアントからの接続要求を待てる状態にする
60
+
61
+ listen(sock0, 5);
62
+
63
+ ```
64
+
65
+ bindでsock0にどのアドレス、どのポートとかの紐付けをする
66
+
67
+ listenして
68
+
69
+
70
+
71
+ ```c
72
+
73
+ sock = accept(sock0, (struct sockaddr *)&client, &len);
74
+
75
+ ```
76
+
77
+ 接続要求があれば接続してきたクライアントと通信するためのソケットを返します。
78
+
79
+
80
+
81
+ このsock0とsockは別ものです。(同じものだとサーバー1つに対してクライアントも1つしか接続できないようになってしまうので。。)
82
+
83
+
84
+
85
+ という感じです。

2

修正

2016/10/28 06:07

投稿

hiim
hiim

スコア1689

test CHANGED
@@ -20,17 +20,11 @@
20
20
 
21
21
 
22
22
 
23
- という事はC言語側がサーバー、C#側がクライアントという事なので
24
-
25
-
26
-
27
23
  「C言語側から送られてくるint型のデータを取得したいです。」
28
24
 
29
25
 
30
26
 
31
- これはC#側から送られてくるint型のデータを受信したいという事ではないですか?
32
-
33
- サーバーとクライアントが混同されているように思います。
27
+ サーバー側からクライアントに送るいう事はクライアントから接続されたソケットを使っデータを送ります。
34
28
 
35
29
 
36
30
 

1

追記

2016/10/28 05:56

投稿

hiim
hiim

スコア1689

test CHANGED
@@ -7,3 +7,31 @@
7
7
 
8
8
 
9
9
  [こんな感じに](http://www.geekpage.jp/programming/winsock/tcp.php)
10
+
11
+
12
+
13
+ 追記
14
+
15
+
16
+
17
+ > C言語側ではWinSocketを利用してサーバーを立て
18
+
19
+ > C#側ではSystem.Net.Sockets.TcpClientを利用してクライアントとして
20
+
21
+
22
+
23
+ という事はC言語側がサーバー、C#側がクライアントという事なので
24
+
25
+
26
+
27
+ 「C言語側から送られてくるint型のデータを取得したいです。」
28
+
29
+
30
+
31
+ これはC#側から送られてくるint型のデータを受信したいという事ではないですか?
32
+
33
+ サーバーとクライアントが混同されているように思います。
34
+
35
+
36
+
37
+