環境:Windows2000とWindows2000(サーバに見立てて)

WinScok2にてサーバソケットAPを作ったのですが、
クライアントからの接続でタイムアウトエラーになります。
以前にPC側APとサーバAPでポートが同じでなければいけないと言われ修正したのですが、まだ接続できません。
以前の方にも言われたのですが、サーバAPを起動後にプロンプトからtelnet (リスンされたIP) (ポート番号)で起動すると、接続に失敗しました。とメッセージが表示されます。

サーバAPはaccept()で待っている状態です。

何か洩れている箇所があるのでしょか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>PC側APとサーバAPでポートが同じでなければいけないと言われ


そんなことはないですよ。
Listenポートは指定しますが、クライアント側は、OSから割り当てられたものを
使うのが普通のやり方です。そうしないと困ることがあるはずです。
(Webサーバを稼動させていると、Webクライアントになれないとか...)

>telnet (リスンされたIP) (ポート番号)で起動すると、接続に失敗しました
accept以前に問題がありそうですね。
ソケットの生成(socket)、バインド(bind)、listen でエラーは出ていませんか?
http://www.katto.comm.waseda.ac.jp/~katto/Class/ …

参考URL:http://www.katto.comm.waseda.ac.jp/~katto/Class/ …
    • good
    • 0
この回答へのお礼

ありがとうございます。
ポート番号が違うため、接続できませんでした。

お礼日時:2003/09/10 14:23

まずは、サーバ側APに問題があるのか、クライアントAPに問題があるのか切り分けるのが早道でしょう。



サーバAPなるものを起動した状態で、サーバ側のコマンドプロンプトから、
netstat -a
と打ってみてください。以下のようなリストが表示されるはずです。

C:\Documents and Settings\tamamori>netstat -a

Active Connections

Proto Local Address Foreign Address State
TCP Sirius:epmap Sirius:0 LISTENING
TCP Sirius:microsoft-ds Sirius:0 LISTENING
TCP Sirius:1025 Sirius:0 LISTENING
TCP Sirius:1027 Sirius:0 LISTENING
TCP Sirius:3541 Sirius:0 LISTENING
TCP Sirius:5000 Sirius:0 LISTENING
  :
  :
  :

このリストに、あなたのサーバAPがlistenしているはずのポート番号は表示されていますか?
(注意:80などのwelknown portは、httpなどのようにプロトコル名で表示されます。)

ここまでOKなら、サーバAPは目的通り、accept()待ちになっていると考えて良いでしょう。

次に、同じくサーバ側のコマンドプロンプトから、
telnet localhost ポート番号
と打ってみてください。

つながりますか?
というか、繋がるはずです。

ここまできたら、疑うのはクライアント側APまたは、クライアントマシンとサーバマシンを繋いでいる部分です。(ハード的に部分とソフト的な部分があります。)

参考まで。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ポート番号が違うため、接続できませんでした。

お礼日時:2003/09/10 14:23

待つのはlisten()では?

この回答への補足

デバックで見る限りではacceptのような気がします。

補足日時:2003/09/10 14:19
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QE39Aに適合するショックアブソーバ

ご存知の方がいれば、教えてください。
E39A(VR4)のショックアブソーバを社外品に交換しようと考えてます。
候補はカヤバのNEW SR SPECIALを考えています。しかしながら、メーカホームページには90年7月までしか対応できないように記載されており、90年12月登録の私の車には使用できないように見えます。
90年8月以降のE39A(VR4)でNEW SR SPECIALをご利用の方、いらっしゃいませんでしょうか。また、利用可否をご存知の方いらっしゃいませんでしょうか。事情があり、早急に知りたいと考えております。
何卒、ご回答のほどよろしくお願いいたします。

Aベストアンサー

古いGABのカタログで調べたところ(95,97年)、E39AギャランVR4は 87/10~92/3まで同じショックアブソーバーで大丈夫だと思います。

KYBのカタログが無いので、はっきりは分かりませんが、ABSが付いていたら、配線を留めるブラケットが無いのかもしれません。

QTCP/IP: 非ソケットに対するソケット操作です?

UNIX/gcc。
TCP/IPでチャットプログラムを作っているんですが
ログアウトメッセージなるものを送る前に
sendto() sent a different number of bytes than expected: Socket operation on non-socketというエラーが出ます。
起こる箇所:クライアント
msgStruct.option = htonl(option);
msgStruct.seatLog = htonl(loggedIn);
if (sendto(sock, &msgStruct, sizeof(msgStruct), 0, (struct sockaddr *)
&echoServAddr, sizeof(echoServAddr)) != sizeof(msgStruct)) {
printf("sizeof(msgStruct): %d\n", sizeof(msgStruct));
DieWithError("sendto() sent a different number of bytes than expected");

これはどういうときに起こるのでしょうか?
このエラーが起こり始めたのはファイルの中のポート番号の値を変えてからです。
元通りにポート番号をコマンドの引数から得た値に直せば
このエラーは消えますが、そうするとチャットプログラムとして動作しなくなってしまいます。

//これで各自のクライアントが独自のポート番号を持てます
echoDummyAddr.sin_port = 29990 + (unsigned short)recordNumber;
//元々はechoServPort = atoi(argv[1]);で得た値を送ってました

loggedIn = logIn(option, msgString, seatLog, inet_ntoa(echoClntAddr.sin_addr), echoDummyAddr.sin_port);

関数側(端折ってます):
int logIn(int option, char *id, int loggedIn, char *ip, unsigned short portNum)
{
FILE *file_ptr;
user record_file;
record_file.portNum = portNum;

fwrite(&record_file, sizeof(record_file), 1, file_ptr);
fclose(file_ptr);
}
return loggedIn;
}
小さなヒントでもいいですから、どうか宜しくお願いします。

UNIX/gcc。
TCP/IPでチャットプログラムを作っているんですが
ログアウトメッセージなるものを送る前に
sendto() sent a different number of bytes than expected: Socket operation on non-socketというエラーが出ます。
起こる箇所:クライアント
msgStruct.option = htonl(option);
msgStruct.seatLog = htonl(loggedIn);
if (sendto(sock, &msgStruct, sizeof(msgStruct), 0, (struct sockaddr *)
&echoServAddr, sizeof(echoServAddr)) != sizeof(msgStruct)) {
printf("sizeof(msgStruct): %d\n", ...続きを読む

Aベストアンサー

このエラー(Socket operation on non-socket)
がでるのは、sockの値が破壊され、0になっていると考えられます。
sockはint型で確保されているはずので、printf文で、
sentoを呼び出す前に、sockの内容を表示してみては如何でしょうか。(エラーが発生したときに表示でもかまいませんが)
また、力づくになりますが、いたるところにprintf文をいれる方法もあります。
printf("sock=%d\n",sock);
又は、
sock = socket()のあとで
sock_save = sockとして(sock_saveはint型)
if (sock != sock_save) printf("sock=%d\n",sock);
とする手もあります。(sockが破壊された時に印字される)
そのとき
printf("src=%s line=%d sock=%d\n",__FILE__,__LINE__,sock);とすると、このprintfを実行した、ソース名と行番号も表示されますので、この方がよいかもしれません。

このエラー(Socket operation on non-socket)
がでるのは、sockの値が破壊され、0になっていると考えられます。
sockはint型で確保されているはずので、printf文で、
sentoを呼び出す前に、sockの内容を表示してみては如何でしょうか。(エラーが発生したときに表示でもかまいませんが)
また、力づくになりますが、いたるところにprintf文をいれる方法もあります。
printf("sock=%d\n",sock);
又は、
sock = socket()のあとで
sock_save = sockとして(sock_saveはint型)
if (sock != sock_save) pr...続きを読む

QBMW E39

BMW E39

室内にあるOBD2端子の場所ってどこですか?

Aベストアンサー

前期型っすか?後期型っすか?


前期型なら確かボンネットオープンで丸型でおなじみの独自形状の奴で、後期型だったら運転席右側の小物入れの上面、じゃなかったかなぁ。。。左ハンドルだとちょっと分かんねっす。

QVxWorks 6.4ソケット接続について。

VxWorks 6.4ソケット接続について。
connectWithTimeout()でサーバへの接続ができません。戻り値が常にERROR。connect() だとうまくいくのですが、何が原因なのでしょうか?
下記にソースコードを提示します

#include "vxWorks.h"
#include "stdio.h"
#include "stdlib.h"
#include "types.h"
#include "net/mbuf.h"
#include "socket.h"
#include "net/socketvar.h"
#include "socklib.h"
#include "inetLib.h"
void tmain( void )
{
#define IP_ADDRS_SERVER "193.9.200.2"
struct timeval TimeOut;
struct sockaddr_in Srv;
static int nSock;
int ret=0;
int status=0;

do{
nSock = socket(AF_INET, SOCK_STREAM, 0);

TimeOut.tv_sec = 10L ;
TimeOut.tv_usec = 0L ;

Srv.sin_family = AF_INET ;
Srv.sin_port = htons(12000) ;
Srv.sin_addr.s_addr = inet_addr(IP_ADDRS_SERVER) ;

//↓これだとうまくいく↓
// if ( connect(nSock, (struct sockaddr *)&Srv, sizeof(Srv) ) == ERROR ) {
//↓これだとうまくいかない↓
if ( connectWithTimeout(nSock, (struct sockaddr *)&Srv, sizeof(Srv), &TimeOut ) == ERROR ) {
ret = close(nSock);
} else {
status=1;
}
}while(status==0);
}

VxWorks 6.4ソケット接続について。
connectWithTimeout()でサーバへの接続ができません。戻り値が常にERROR。connect() だとうまくいくのですが、何が原因なのでしょうか?
下記にソースコードを提示します

#include "vxWorks.h"
#include "stdio.h"
#include "stdlib.h"
#include "types.h"
#include "net/mbuf.h"
#include "socket.h"
#include "net/socketvar.h"
#include "socklib.h"
#include "inetLib.h"
void tmain( void )
{
#define IP_ADDRS_SERVER "193.9.200.2"
struct timeval TimeOut;
struct s...続きを読む

Aベストアンサー

質問のVxWorks 6.4に該当するかはよく分からないのですが、以下のマニュアルにこういう文があります。
http://www.akae.cn/study/ebook/wrs/workbench/platform_general_vxworks_migration_guide_3.6.pdf
「4.9.2 API Mapping
connectWithTimeout is carried forward, but is not supported for AF_INET and AF_INET6 address families. Use select( ) to specify the timeout value for the socket descriptor.」
つまり、AF_INETでは使えない、select()で対処せよ、ということみたいですね。

参考URL:http://www.akae.cn/study/ebook/wrs/workbench/platform_general_vxworks_migration_guide_3.6.pdf

質問のVxWorks 6.4に該当するかはよく分からないのですが、以下のマニュアルにこういう文があります。
http://www.akae.cn/study/ebook/wrs/workbench/platform_general_vxworks_migration_guide_3.6.pdf
「4.9.2 API Mapping
connectWithTimeout is carried forward, but is not supported for AF_INET and AF_INET6 address families. Use select( ) to specify the timeout value for the socket descriptor.」
つまり、AF_INETでは使えない、select()で対処せよ、ということみたいですね。

参考URL:http://w...続きを読む

QBMW(E39)足回りダンパーが変??

先日、E39(DT25・525i)の足回りのフラフラについて質問をしたところ、ありがたいアドバイスをいただきE39の530i純正ショック1台分(走行3万キロ)を購入し、今日、箱を空けてダンパーを手で割と強く押してみたら、ぐ~っと下がって、やがてぐ~っと戻ってきました。4本ともです。これってヘタリでしょうか?ちなみにダンパーは純正のザックスで、バンプラバーも割りときれいです。もしかすると急激に力が加わったときにはグッと堅くなる設定かもしれませんが・・・。どなたか教えてください!

Aベストアンサー

それだけでヘタっているとは判断出来ません。普通押し込んだロッドが戻って来るという事は『まだガスが抜けていない』という事ですので判断材料としては『いい方』の材料となります。ショックの抜けは車体に組み込んで実際に走行してみるか専用の計測器を使用して減衰力の測定をしてみないと判断出来ません。まあワタシなら『ショックだけは』中古を買いませんが。

QTCP/IP通信型プログラムです。 サーバのポート番号をクライアントが

TCP/IP通信型プログラムです。 サーバのポート番号をクライアントが取得するプログラムで、
while(1) {
saddr.sin_port=htons(port);
port++;
fprintf(stdout, "%d\n", port);
} のようなのをプログラムのどこに入れれば

よいのでしょうか?

Aベストアンサー

while((ntohs(saddr.sin_port) <= 0xffff) && (connect(soc, (struct sockaddr *)&saddr, sizeof(saddr)) == SOCKET_ERROR)) {
 saddr.sin_port = htons((ntohs(saddr.sin_port) + 1));
}

こんなところでしょうか。
whileループに入る前に、スキャンするポートの開始値をsaddr.sin_portに設定しておく必要があります。
# 勿論、それ以外のメンバ変数も適切に設定してある必要があります。
65535番ポートまで接続を試行し、『最初に接続できた』ところでループから抜けるでしょう。

が……
>サーバ自身がポート番号をランダムに変更する設定となっているからです。
というのは設計ミスとしか思えませんが。
上記の方法では接続できるまでポート番号を変えながら試行しますけど、connect()がエラー返却するのに時間が掛かる場合、全ポートの試行が終わるまでにどれだけ掛かるやら…。
接続できたとしても、#2さんが指摘しているとおりソレが目的のサーバプログラムが待ち受けしているポートかは不明です。
例えば同じマシンでWebサーバが動作していて80番で待ち受け中に、目的のサーバが7000番とかで待っていた場合、先に接続するのはWebサーバの方です。

while((ntohs(saddr.sin_port) <= 0xffff) && (connect(soc, (struct sockaddr *)&saddr, sizeof(saddr)) == SOCKET_ERROR)) {
 saddr.sin_port = htons((ntohs(saddr.sin_port) + 1));
}

こんなところでしょうか。
whileループに入る前に、スキャンするポートの開始値をsaddr.sin_portに設定しておく必要があります。
# 勿論、それ以外のメンバ変数も適切に設定してある必要があります。
65535番ポートまで接続を試行し、『最初に接続できた』ところでループから抜けるでしょう。

が……
>サーバ自身がポート番...続きを読む

QBMW 5シリーズ(E39)のワイパー

BMW5シリ-ズ(E39)のワイパーですが、右ハンドルなのみワイパーは左ハンドル車と同じに成っていますが、なぜかわかりますでしょうか。

Aベストアンサー

最小限のコストで済ますためにハンドルの位置だけ付け替えているからです。
例えば仮にもう百万円でワイパーも付け替えますといわれてどれだけ買う人が増えるかですよね。

まあ、こういう車に乗っていると海外でレンタカーを借りてもあまり戸惑わず、決して悪いことだけではないと思います。

Qクライアント サーバ(Win2000)間ソケット通信について

クライアントの通信APLをDebugするのに、仮のサーバ(Win2000)に接続するのですが、サーバ側の通信APを
どう開発していいのか?本等にはUNIXのAPのサンプルは
あるのですが、WINサーバのサンプルがありません。
教えてください。

Aベストアンサー

> telnet (サーバ側のIP) (19485)
> 接続中: xxx.xx.x.xxx...ホストへ接続できませんでした ポート番号 19485 : 接続に失敗しました
> と出力されます。

サーバ側APのbindが、ポート19485で正しくできていないのだと思います。

> 気になるのは、サーバ側でAPをコマンドプロンプトからコマンドを発行してるのですが、
> 入力プロンプトが直ぐに返ってきます。ただ、 タスクマネージャーで見るとプロセスが起動されています。
> 非同期なのですか?

同期/非同期は、アプリの実装に依存します。

「コマンドプロンプトからコマンドを発行」が何を指しているかが分かりませんが、
acceptが即時リターンされ、EWOULDBLOCKなどが返ってきているのであれば
非同期ソケットとして動いているのでしょう。

> サーバ側のAPなのですが、VisualStadioVer6.0にてWin32Applicationにて作成したのですが、
> WinMain()で書きださないとリンク時にエラーになります。

WinMain関数は、いわゆるWin32アプリケーションにおける
main関数だと思ってください。

printf等の標準入出力を使いたいのであれば、
プロジェクトの新規作成→Win32 Console Application で、
HelloWorldアプリケーションをスケルトンに選択すれば分かりやすいと思います。

> telnet (サーバ側のIP) (19485)
> 接続中: xxx.xx.x.xxx...ホストへ接続できませんでした ポート番号 19485 : 接続に失敗しました
> と出力されます。

サーバ側APのbindが、ポート19485で正しくできていないのだと思います。

> 気になるのは、サーバ側でAPをコマンドプロンプトからコマンドを発行してるのですが、
> 入力プロンプトが直ぐに返ってきます。ただ、 タスクマネージャーで見るとプロセスが起動されています。
> 非同期なのですか?

同期/非同期は、アプリの実装に依存します。
...続きを読む

QBMW(E39)について

現在、1999年のE39に乗っています。
車に興味を持ち、いろいろな雑誌を読むうちにBMWを
購入しました。しかし興味はあってもなかなかエンジンやサスペンション等のハード的な事やメンテナンスなど理解できず、勉強の日々です。そこでBMW(特にE39)等を初級~中級レベルで扱っているサイトがありましたら教えて頂きたく思います。自分でも調べてみましたが有名なサイトは私にとって上級レベルでした。
あと、もしこの質問にご回答頂けるならば、その方でBMWオーナーであればBMWのどこが一番の魅力かを伺ってみたいです。私はいろんな車に乗ったわけではなく、よく言われているBMWはエンジンフィールが良い、という意見で購入を決めましたが、はっきりと「この感覚が良いと言われるものか」というのが解かりません。
幾つも質問して、わかり難くなりましたが、よろしくお願い致します。

Aベストアンサー

既にご存知のサイトかも知れませんが、、
おたっきーず:http://www.bohp.net/
BMW@FUN:http://www2s.biglobe.ne.jp/~i-zumi/
5シリーズの部屋:
http://www.ipc-tokai.or.jp/~tany/e39index.html

また、輸入車は情報が少ない上、対応するアタッチメント(exオーディオやキーレスアンサーバック等々など)が少なく苦労(苦心)します。そこも面白いところですが、、、。
ベントレーのマニュアルなどもあると心強いです。
こんな物:http://page7.auctions.yahoo.co.jp/jp/auction/g41571466

QUSBポート プリンタのポート

windows7で
EPSON PM-G860のプリンターを使っているのですが
ポートが
USB001となっていて
ポートの構成をクリックすると
ポートの構成中にエラーが発生しました
この操作はサポートされていません

とでます。 私は今までTCP/IPでrawやlprでの送信が普通だと
思っていたのですが このポートは一体何なんでしょうか???(これが質問 以下は補足的質問)
私の理解不足で申し訳ございません。
プリンタとWindows7は自宅で使っているものです。
そもそもこのプリンタにIPアドレスなんてないですよね?

話は変わって、もしこのプリンタにデータを流すとしたら
ポートを単純にUSB001と指定して送信してやればいいのでしょうか?
プログラミングもしたいと思っています。

Aベストアンサー

ネットワークプリンタ(プリンターサーバー)に設定すればIPアドレスが設定出来ます。


http://buffalo.jp/products/catalog/network/printserver.html


人気Q&Aランキング

おすすめ情報