サーバ側がC言語(Linux)、クライアント側がJavaのソケット通信プログラムを書いているのですが、いきなりつまづいてしまったため質問失礼します。
ソースとしては以下の2つのソースをテストとして利用させて頂きました。
ローカルネットワーク内の2台にそれぞれを設置し、それにあわせてIPとポートは変更してあります。
http://www.aihara.co.jp/~junt/program/socket/ine …
http://www.hellohiro.com/src/HelloWorldSocketCli …
クライアントのJavaプログラムから"Hello World"をサーバのCプログラムに送ると"Hello World"とは標準されるものの、出力された後ろに文字化けしたような文字が少し出てしまいました。加えて、直後にもう一度試してみようとサーバプログラムを立ち上げるとbindでエラーを吐いてしまいました。
recvの結果(rc)をprintfで確認してみたところ、13となり2文字多く送られていることを確認しました。
そこで、Javaのprintlnの自動改行周りが原因かと思いprintfに変えてた試してみました。
しかし、recvの結果は11となったものの文字化けと直後のbindエラーはなおりませんでした。(文字化けの種類が変わりましたが)
この問題の原因と考えられることと解決案をアドバイス願えませんでしょうか。よろしくお願いします。
以下、開発環境です。
■C言語
OS:Fedora 12
エディタ:一応VisualC++2008(Linux用に書いているので実質ただのテキストエディタ)
コンパイラ:標準gcc
■Java
OS:Windows XP SP3
エディタ・コンパイラ:eclipse
※実装先の都合上、winsockによるサーバに変えるや言語の変更はできません。
No.1ベストアンサー
- 回答日時:
サーバ側のほうでbuf[]が初期化されてないからゴミがでるのは当然なんでは?
あるいはターミネータ付けるとかしないと終わりが分からんと思いますが。
/* acceptしたソケットから受信*/
rc = recv(fd, buf, 256, 0);
if(rc < 0){
printf("server:recv error.\n");
exit(rc);
} else {
buf[rc] = 0 ;
}
printf("server:recv %s.\n", buf);
ご回答ありがとうございます。
C言語クライアントを使ってのテストではゴミが出なかったので気にしていなかったのですが、bufの初期化をしたところゴミはでなくなりました。ありがとうございます。
しかし、bindエラーの方が以前直らないため、別項にて質問させて頂こうと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
UdpClient 送信元のIPアドレ...
-
【ajax】 XMLHttpRequestオブジ...
-
UDP通信におけるbind関数について
-
同じLAN内パソコンのIPアドレス...
-
エクセル VBA でのCOMポート...
-
ソケットのクローズについて
-
Winsockで接続待ちタイムアウト...
-
Connectエラーが出てしまう・・...
-
ソケットを用いた1対多通信につ...
-
WIN32API CreateFileのCOMx
-
VB6のwinsockでconnectできない
-
VB6‥ソケットについて
-
recv関数でフリーズしてしまう
-
winsockでファイル転送
-
WinSockでチャット
-
音声入出力プログラムの作成方...
-
TCP/IP通信型プログラムです。...
-
TCP/IP通信でのコネクシ...
-
VBのソケット通信(winsock)の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
エクセル VBA でのCOMポート...
-
VB6のwinsockでconnectできない
-
Socket通信の0バイト受信について
-
recv関数でフリーズしてしまう
-
UDP通信におけるbind関数について
-
ソケットのrecvの戻り値が0
-
Winsockで接続待ちタイムアウト...
-
UDP通信する時に、相手にどうや...
-
UdpClient 送信元のIPアドレ...
-
ソケット通信 同じポート番号...
-
ソケットのクローズについて
-
空きポートの取得方法
-
Winsockを使わずにVBでSocketを...
-
ソケットでクライアントのipア...
-
ソケット通信
-
ソケットを用いた1対多通信につ...
-
ソケットとそれに基づくストリ...
-
CreateFile関数でCOMポートが開...
-
SIPがNATを越えられない理由
おすすめ情報