質問するログイン新規登録

回答編集履歴

4

修正

2016/10/28 06:15

投稿

hiim
hiim

スコア1689

answer CHANGED
@@ -1,5 +1,4 @@
1
- どちらもクライアントになってないですか?
2
- C言語の方をwinsockを使ってサーバーにする場合は
1
+ まずC言語の方サーバーとして機能していません。
3
2
  ソケットを作ってbindしてlistenしないといけません。
4
3
 
5
4
  [こんな感じに](http://www.geekpage.jp/programming/winsock/tcp.php)

3

追記

2016/10/28 06:15

投稿

hiim
hiim

スコア1689

answer CHANGED
@@ -13,3 +13,31 @@
13
13
 
14
14
  サーバー側からクライアントに送るという事はクライアントから接続されたソケットを使ってデータを送ります。
15
15
 
16
+
17
+ 追記
18
+
19
+ 参考に貼ったURLにあるサーバーのソースの
20
+
21
+ ```c
22
+ // ソケットの作成
23
+ sock0 = socket(AF_INET, SOCK_STREAM, 0);
24
+ ```
25
+ でlisten用のソケットを作って(接続要求を待つ用のもの)
26
+
27
+ ```c
28
+ bind(sock0, (struct sockaddr *)&addr, sizeof(addr));
29
+
30
+ // TCPクライアントからの接続要求を待てる状態にする
31
+ listen(sock0, 5);
32
+ ```
33
+ bindでsock0にどのアドレス、どのポートとかの紐付けをする
34
+ listenして
35
+
36
+ ```c
37
+ sock = accept(sock0, (struct sockaddr *)&client, &len);
38
+ ```
39
+ 接続要求があれば接続してきたクライアントと通信するためのソケットを返します。
40
+
41
+ このsock0とsockは別ものです。(同じものだとサーバー1つに対してクライアントも1つしか接続できないようになってしまうので。。)
42
+
43
+ という感じです。

2

修正

2016/10/28 06:07

投稿

hiim
hiim

スコア1689

answer CHANGED
@@ -9,10 +9,7 @@
9
9
  > C言語側ではWinSocketを利用してサーバーを立て
10
10
  > C#側ではSystem.Net.Sockets.TcpClientを利用してクライアントとして
11
11
 
12
- という事はC言語側がサーバー、C#側がクライアントという事なので
13
-
14
12
  「C言語側から送られてくるint型のデータを取得したいです。」
15
13
 
16
- これはC#側から送られてくるint型のデータを受信したいという事ではないですか?
17
- サーバーとクライアントが混同されているように思います。
14
+ サーバー側からクライアントに送るいう事はクライアントから接続されたソケットを使っデータを送ります。
18
15
 

1

追記

2016/10/28 05:56

投稿

hiim
hiim

スコア1689

answer CHANGED
@@ -2,4 +2,17 @@
2
2
  C言語の方をwinsockを使ってサーバーにする場合は
3
3
  ソケットを作ってbindしてlistenしないといけません。
4
4
 
5
- [こんな感じに](http://www.geekpage.jp/programming/winsock/tcp.php)
5
+ [こんな感じに](http://www.geekpage.jp/programming/winsock/tcp.php)
6
+
7
+ 追記
8
+
9
+ > C言語側ではWinSocketを利用してサーバーを立て
10
+ > C#側ではSystem.Net.Sockets.TcpClientを利用してクライアントとして
11
+
12
+ という事はC言語側がサーバー、C#側がクライアントという事なので
13
+
14
+ 「C言語側から送られてくるint型のデータを取得したいです。」
15
+
16
+ これはC#側から送られてくるint型のデータを受信したいという事ではないですか?
17
+ サーバーとクライアントが混同されているように思います。
18
+