ネットワークプログラミング相談室 Port12
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん ◆OaTCP/IPW6
NGNGProgramming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
過去スレ:
Port1 http://pc.2ch.net/tech/kako/970/970344582.html
Port2 http://pc.2ch.net/tech/kako/1006/10062/1006258198.html
Port3 http://pc3.2ch.net/tech/kako/1023/10233/1023359282.html
Port4 http://pc3.2ch.net/tech/kako/1034/10342/1034236536.html
Port5 http://pc2.2ch.net/tech/kako/1040/10402/1040220302.html
Port6 http://pc5.2ch.net/tech/kako/1052/10521/1052106444.html
Port7 http://pc5.2ch.net/test/read.cgi/tech/1063035045/
Port8 http://pc5.2ch.net/test/read.cgi/tech/1073560271/
Port9 http://pc5.2ch.net/test/read.cgi/tech/1080658835/
Port10 http://pc5.2ch.net/test/read.cgi/tech/1090385857/
Port11 http://pc5.2ch.net/test/read.cgi/tech/1096187183/
関連リンクは>>2-10辺り
足りなかったら適当に付け足してね
0002デフォルトの名無しさん
NGNGUNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/
詳解TCP/IP〈Vol.1〉プロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894713209/
The Implementation (TCP/IP Illustrated, Volume 2)
http://www.amazon.co.jp/exec/obidos/ASIN/020163354X/
Linuxソケットプログラミング―ネットワークプログラミングにおける実践技法
http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/
TCP/IPによるネットワーク構築〈Vol.3〉―クライアント‐サーバプログラミングとアプリケーション
http://www.amazon.co.jp/exec/obidos/ASIN/4320028007/
Webプロトコル詳解―HTTP/1.1、Webキャッシング、トラフィック特性分析
http://www.amazon.co.jp/exec/obidos/ASIN/4894715414
WinSock2.0プログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4797306882/
猫でもわかるネットワークプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4797323604/
IPv6ネットワークプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4756142362/
0003デフォルトの名無しさん
NGNGTCP/IPによるネットワーク構築〈Vol.1〉原理・プロトコル・アーキテクチャ
http://www.amazon.co.jp/exec/obidos/ASIN/432012054X/
0004デフォルトの名無しさん ◆TCP/IPmFAM
NGNGRFC 日本語版リスト
http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
C10K ヘヴィーロードサーバ
http://www.kegel.com/c10k.html
JPNIC RFC関連リンク集
http://rfc-jp.nic.ad.jp/link/
RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳
http://www.studyinghttp.net/rfc_ja/2616/rfc2616_ja.html
IANA Well known port numbers
http://www.iana.org/assignments/port-numbers
MSDN
http://msdn.microsoft.com/library/en-us/dnsitehelp/html/tochelp.asp
ツール類
tcpdump
http://www.tcpdump.org/
Windump
http://netgroup-serv.polito.it/netgroup/tools.html
pathchar
ftp://ftp.ee.lbl.gov/pathchar/
pchar
http://www.employees.org/~bmah/Software/pchar/
0005デフォルトの名無しさん
NGNGRFC 日本語版リスト
http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
RFC Editor
http://www.rfc-editor.org/
HTMLなRFC (セクションを直に示すのに便利)
http://www.freesoft.org/CIE/RFC/
JPNIC RFC関連リンク集
http://rfc-jp.nic.ad.jp/link/
RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳
http://www.studyinghttp.net/rfc_ja/2616/rfc2616_ja.html
IANA Well known port numbers
http://www.iana.org/assignments/port-numbers
C10K ヘヴィーロードサーバ
http://www.kegel.com/c10k.html
Raw IP Networking FAQ
http://www.whitefang.com/rin/
- Randomness Recommendations for Security
http://www.faqs.org/rfcs/rfc1750.html
MSDN
http://msdn.microsoft.com/library/en-us/dnsitehelp/html/tochelp.asp
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGネットワークプログラミングの基礎知識
http://X68000.q-e-d.net/~68user/net/
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG★図書
TCP/IPによるネットワーク構築〈Vol.1〉原理・プロトコル・アーキテクチャ
http://www.amazon.co.jp/exec/obidos/ASIN/432012054X/
★ツール
Packetyzer
http://www.networkchemistry.com/products/packetyzer/
ethereal
http://www.ethereal.com/
★プログラミング
Raw IP Networking FAQ
http://www.whitefang.com/rin/
0010デフォルトの名無しさん
NGNGRFC Editor
http://www.rfc-editor.org/
HTMLなRFC (セクションを直に示すのに便利)
http://www.freesoft.org/CIE/RFC/
- Randomness Recommendations for Security
http://www.faqs.org/rfcs/rfc1750.html
★プロトコル
TTCP
http://www.sean.de/Solaris/ttcp.html
http://www.kohala.com/start/ttcp.html
★IP, TCP実装
http://www.iti.fi/documentation/miniip.html
http://www.sics.se/~adam/uip/
http://www.codeguru.com/Cpp/I-N/network/tcpip/article.php/c5447/
http://www.geocities.jp/bruce_teller/security/garakuta.htm
★その他
パタリロ〜クックロビン音頭〜
http://www.fileup.org/file/fup2930.mp3
通報
http://www.cyberpolice.go.jp/
0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNGhttp://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket
The Code Project - Internet & Network programming
http://www.codeproject.com/internet/
0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG調べてもwin2k/XP用の情報しか見つからなかったので。
0015前スレ808
NGNG受信する際に、プレフィックス分(2byte)を先にrecv()して、そのデータから次にくるサイズを判断して、そのサイズ分recv()するというコードを組んだのですが、
FAQを読み返すと、silly window syndromeが発生しそうなのですが、こういったコードは止めた方が良いのでしょうか?
それと関連して、recv()する際のバッファの大きさというのは、どれくらいが理想なのでしょうか?極端な話、1Mくらい取っても平気なのでしょうか?
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNGここが問題
0018デフォルトの名無しさん
NGNGwinsock使え
0019前スレ808
NGNGあぁ、それはわかっているのですが・・・。
えーと、少し言葉が足りなかったみたいですいません。
速度的に、recv()に指定するバッファの大きさで違いが発生するのか知りたかったのです。
0020デフォルトの名無しさん
NGNG受信部のモジュール化がちゃんとしていれば、
後から幾らでも書き換えられるから気にすることはない。
0021デフォルトの名無しさん
NGNGsilly window syndromeの分は理解しているとして、
バッファーが大きいと遅くなるかって事か?
ならんよ。仮想記憶上のメモリ食うのは食うけど、速度とはほとんど無関係。
0023前スレ808
NGNG>>20
ありがとうございます。
今回のプログラムの場合は送信側が、1/60秒間隔で送る仕様なので、あまり気にしない事にします!
>>21
速度は、無関係なのですね!ありがとうございます。
0024デフォルトの名無しさん
NGNG今回問題無さそうだけど、Unix系のプラットフォームなら、fdopen と setvbuf で
バッファ管理をライブラリに任せてしまえば手間要らずで簡単だと思う。
002714
NGNGWinsockで具体的にどうやるんですか?もう少し詳しく聞かせてください。
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNGサーバー側で
while(){
send(char buff)
}
クライアント側で
while(){
reeive(cahr buff)
}
みたいなルーチンで大丈夫なんでしょうか?
なんか失敗することがあるんですが
0030デフォルトの名無しさん
NGNG> reeive(cahr buff)
> なんか失敗することがあるんですが
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGsend や recv のドキュメント読めばだいたい書いてあると思うけど。
受け取った中身自体は、TCPの場合だいたい信頼するのが普通。
チェックしろという要件があるなら、自前でCRCでもつけとく。
0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNG関数の戻り値を全てチェックして発生しうるエラー全種類に対して適切な対応しろ。
以上。
0035デフォルトの名無しさん
NGNGバイナリデータを含むBYTEデータを送信してみたところ受信した結果と違いがありました。
/* 送信側 */
BYTE buf[1024];
buf[0] = 0x00;
buf[1] = 0x00;
buf[2] = 0x01; // 10進で1
buf[3] = 0xAO; // 10進で160
buf[4] = …
long rtn = send(soc, buf, sizeof(buf), 0);
/* 受信側 */
BYTE data[1024];
long rtn = recv(soc, (char *)data, sizeof(data), 0);
/* 受信結果 */
data[0] = 0
data[1] = 0
data[2] = 1
data[3] = 148
buf[4] = …
受信データの3バイト目に148が入っていますが、
送信データの3バイト目は160です。
なぜ送受信したデータに違いが発生してしまうのでしょうか?
recv()の戻り値の受信バイト数は送信バイト数と異なっていました。
おかしいと思い送信の仕方や使用するデータ型をcharに変えたりしましたが
状況は変わりませんでした。
本当に困っています。どなたかアドバイスお願いします。
0036デフォルトの名無しさん
NGNG7 :デフォルトの名無しさん :04/12/07 23:01:19
問題ありのサイト
ネットワークプログラミングの基礎知識
http://X68000.q-e-d.net/~68user/net/
これ、前スレテンプレにもありましたが何が問題?
0037デフォルトの名無しさん
NGNGわかるまで勉強シロ
0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGPerl使ってるから。
Rubyを使わない奴はただのDQN
0042デフォルトの名無しさん
NGNGC言語の勉強からやり直しー
0043デフォルトの名無しさん
NGNGSSLやproxyに対応していますか?
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG>send(sock, net_byte+data, sizeof(data)+4, 0)
net_byte+data
ってなに?
004935
NGNGポインタに整数を加算しようとしていますからおかしいです。
send()でBYTE型を使いバイナリデータを送信し、
recv()で受信するとバイナリデータが壊れている(違う数値になっている)
のは私がデータ型を分かっていないからなんでしょうか?
BYTE buf[1024];
long rtn = send(soc, buf, sizeof(buf), 0);
BYTE data[1024];
long rtn = recv(soc, (char *)data, sizeof(data), 0);
005035
NGNGメモリウィンドウで送信したデータと
受信したデータを比較しましたが、やはりバイナリデータの部分だけ
壊れていました。一応報告まで。
0051デフォルトの名無しさん
NGNGrtnを越えた部分のデータはゴミだぞ。
0052デフォルトの名無しさん
NGNGデータのIOについてよく分かってないなら、まずネットワークへの出力より先に
ファイル出力で試しをやってみたら?writeも似たような書式なわけだし。大した
差はないけど、ネットワーク絡みの問題を避けて、基本部分のチェックができる
から。
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG51が正しい指摘してるよ。
送った分だけ受信するには、送ったバイト数受け取るまでループして受信を続けなくてはならない。
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGソケット・ディスクリプタを別の実行プログラムに引き渡す方法として、
値をそのままプログラム引数で引き渡してやるとRedHat、Windows 2000/XP
で正常に動作してるようなのですが、これは正しい方法でしょうか?
<プログラム起動側>
sock = socket(AF_INET, SOCK_STREAM, 0);
・・・bind,listen,acceptした後、send,recvを実行・・・
char cmdbuff[512];
#ifdef WIN32
sprintf(cmdbuff, "start hogehoge.exe %d", sock);
#else
sprintf(cmdbuff, "hogehoge %d &", sock);
#endif
・・・
<プログラム起動側>
main関数のargcで受け取ったソケット・ディスクリプタの値をSOCKET変数
に代入し、それを使ってsendやrecvしても問題なく動く
Linuxならdupした後、forkの子プロセスからexecする方がいいのでしょうか?
また、Windowsでは、ソケット・ディスクリプタをプロセス超えて複製する
正しい手順などあるのでしょうか?
005756
NGNG<system関数で別プログラムを起動する側>
sock1 = socket(AF_INET, SOCK_STREAM, 0);
・・・bind,listen
sock2 = accept(sock1, (LPSOCKADDR)&addrLocal, (size_t*)&addrLen);
acceptの後、sock2を使ってsend,recvを実行・・・
char cmdbuff[512];
#ifdef WIN32
sprintf(cmdbuff, "start hogehoge.exe %d", sock2);
#else
sprintf(cmdbuff, "hogehoge %d &", sock2);
#endif
・・・
<system関数起動される側>
main関数のargcで受け取ったsock2の値をSOCKET変数に代入し、それを使って
sendやrecvしても問題なく動く
0058デフォルトの名無しさん
NGNGISohKiEqISohKiEqISohKiEqISohKiEqISohKiEqISohKiEqISohKiEqGyhC
0060デフォルトの名無しさん
NGNGttp://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_2.html#SEC2
0061デフォルトの名無しさん
NGNG役だたねぇ回答乙。オナニーは自宅でやれな。
0062デフォルトの名無しさん
NGNG前のほうの質問。
fork して exec すれば引き継いだり dup で複製したり確実にできる。
system関数はシェル起動までは引き継がれるだろうが、
その先どうなるかシェルが何なのか解らないとわからない。
後のほうの質問。
CreateProcessで作るプロセスには bInherit を指定して、ハンドルを引き継がせることができる。
このときはハンドルの値も同じ。(system とか exec はデフォルトで TRUE だっけ?)
関係ない他所様プロセスにハンドルを渡したい場合は、DuplicateHandle or WSADuplicateSocket。
006336
NGNG翌日隣の家の親父が死んだ
0064デフォルトの名無しさん
NGNGID が出ない事をいいことに人の番号を騙らないで下さい!!
なんか雰囲気悪いですね、このスレ。
>>63
でもチョトだけワロタ
0066デフォルトの名無しさん
NGNGおまえには一生無理だ
そのレスがどれだけアホなものかをわかったとき
お前は死ぬ
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGパケットフィルタリングしたいと言っているのに pcap を紹介する
馬鹿さ加減を 14 は揶揄したかったんでしょ。
006956
NGNGLinux側、確実に動く方法で書き換えました。
WSADuplicateSocketの情報も助かりました(このAPI知りませんでした)。
どうもありがとうございました。
0070デフォルトの名無しさん
NGNG> その先どうなるかシェルが何なのか解らないとわからない。
POSIXではsystem(3)は/bin/shを起動するものと決まってるんだが。
だいたいシェルが何かわからないんじゃsystemの引数も書けないだろ。
0071デフォルトの名無しさん
NGNG> main関数のargcで受け取ったソケット・ディスクリプタの値をSOCKET変数
> に代入し、それを使ってsendやrecvしても問題なく動く
close(2)せずに子プロセスで同じディスクリプタ番号使えばもちろん問題ないわな。
0072デフォルトの名無しさん
NGNG>>56 はdupした後は親の方でclose死体と言っているので
その答えは無意味。
0073デフォルトの名無しさん
NGNGint sendData(const void *data, int length, int *sleep);
戻り値 OK .. エラー無し
WOULDBLOCK .. 非ブロック処理続行
IOSLEEP .. スリープ可能
ERROR .. その他エラー
「スリープ可能」って,どういう意味だかピンとくる人います?
この値が帰って来たら,何をすればいいんだろう?
0074デフォルトの名無しさん
NGNGつーかマニュアル読め厨房
0075デフォルトの名無しさん
NGNGそれだけの記述から正確な意味や意図が汲み取れるわけないだろ・・・
007673
NGNG一昨日,上に相談したんだけど,「ちょっと待っててね」ばかりだし。。。
リファレンス読んでも「スリープ可能」しか書いてないし。。。
サンプルコードもないし。。。
あー。。。
0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG最後のひとつがcloseされるまで使えるよ
0079デフォルトの名無しさん
NGNG第三引数の説明もないのか?
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNGchar buf[ 600] = {0};
//bufに値を入れる。
memcpy( buf, ???, sizeof( ??? ) );
send( buf, 600 );
とクライアント側で送信。
char buf[ 600] = {0};
int iLen = recv( buf, 600 );
とサーバー側で受信。
これを連続して行っているのですが、recv()の戻り値が600以下で返ってくる場合があります。
send()って、バッファサイズに指定したサイズを一気に送るのではないのでしょうか?
008483
NGNGスレ汚しスマソ。
0085デフォルトの名無しさん
NGNG008686
NGNGGETではうまく取得できてもPOSTではうまく取得できません。
ネットでも結構調べてみたのですが、POSTのサンプルを見つけることが
できませんでした。使用言語はCです。ご教授お願いできないでしょうか。
008786
NGNG#include <string.h>
#include <stdlib.h>
#include <winsock2.h>
#include <io.h>
#define BUF_LEN 255+1 // 一時退避のサイズ
// argc 引数の総個数
// argv 引数の文字列を指すポインタの配列
int main(int argc, char *argv[]){
// 変数宣言
int s; // ソケットのためのファイルディスクリプタ
hostent *hostent; // ホスト名と IP アドレスを扱うための構造体
sockaddr_in sockaddr_in; // ソケットを扱うための構造体
servent *servent; // サービス (http など) を扱うための構造体
WSADATA wsadata;
char send_buf[BUF_LEN]; // サーバに送る HTTP プロトコル用一時退避
char host[BUF_LEN] = "Localhost"; // 接続するホスト名
char path[BUF_LEN] = "/"; // 要求するパス
unsigned short port = 0; // 接続するポート番号
char host_path[BUF_LEN]; // ホストのパス名
char *p; // /の位置格納ポインタ
int errCode; // エラーコードを格納
char recv_buf[BUF_LEN]; // サーバから受け取る HTTP プロトコル用一時退避
int numrcv; //recvのエラーコード獲得
008886
NGNGif (WSAStartup(MAKEWORD(2, 0), &wsadata)) {
printf("WSAStartup関数失敗です\n");
return -1;
}
if ( argc > 1 ){ // URLが指定されていたら(引数2個目がURLになる)
if (strlen(argv[1]) > BUF_LEN-1 ){
fprintf(stderr, "URL が長すぎます。\n");
return 1;
}
// http:// から始まる文字列で
// sscanf が成功して
// http:// の後に何か文字列が存在するなら
if (strstr(argv[1], "http://") && // argv[1]の先頭からhttp://を探す
sscanf(argv[1], "http://%s", host_path) && // %sにhost_pathを読み込む
strcmp(argv[1], "http://" )){ // argv[1]がhttp://なら処理をする
p = strchr(host_path, '/'); // ホストとパスの区切り "/" が含まれているか
// 先頭から/を探しポインタの位置を返す
if ( p != NULL ){
strcpy(path, p); // "/"以降の文字列を path にコピー
*p = '\0'; // ポインタを初期化
strcpy(host, host_path); // "/"より前の文字列を host にコピー
} else { // "/"がないなら=http://host という引数なら
strcpy(host, host_path); // 文字列全体を host にコピー
}
008986
NGNG// 先頭から:を探しポインタの位置を返す
if ( p != NULL ){
port = atoi(p+1); // ポート番号を取得
if ( port <= 0 ){ // 数字でない (atoi が失敗) か、0 だったら
port = 80; // ポート番号は 80 に決め打ち
}
*p = '\0'; // ポインタを初期化
}
} else {
fprintf(stderr, "URL は http://host/path の形式で指定してください。\n");
return 1;
}
}
printf("http://%s%s を取得します。\n\n", host, path);
// ホストの情報(IPアドレスなど)を取得して、hostentにセット */
hostent = gethostbyname(host);
if ( hostent == NULL ){
errCode = WSAGetLastError();
fprintf(stderr, "[%s] から IP アドレスへの変換に失敗しました。エラーコードは%dです\n", host,errCode);
return 0;
}
memset(&sockaddr_in,0,sizeof(sockaddr_in)); // 構造体をゼロクリア
sockaddr_in.sin_family = AF_INET; // アドレスファミリ 固定で決まっている
// IPアドレスを示す構造体をコピー
// 指定されたバイト数をhostent->h_addrから&sockaddr_in.sin_addrにコピーする
memcpy( &sockaddr_in.sin_addr,hostent->h_addr, hostent->h_length);
0090nbuharutumrika
NGNG009186
NGNGsockaddr_in.sin_port = htons(port);
} else { // そうでないなら getservbyname でポート番号を取得
servent = getservbyname("http", "tcp");
if ( servent != NULL ){ // 成功したらポート番号をコピー
sockaddr_in.sin_port = servent->s_port;
} else { // 失敗したら 80 番で固定
sockaddr_in.sin_port = htons(80);
}
}
// ソケット生成
if ( ( s = socket(AF_INET, SOCK_STREAM, 0) ) < 0 ){
errCode = WSAGetLastError();
fprintf(stderr, "ソケットの生成に失敗しました。エラーコードは%dです\n",errCode);
return 1;
}
// サーバに接続
// SOCKADDR 構造体は、Windows ソケット通信に参加しているマシンの
// IP (インターネット プロトコル) アドレスを格納するのに使います。
if ( connect(s, (struct sockaddr *)&sockaddr_in, sizeof(sockaddr_in)) == -1 ){
fprintf(stderr, "connect に失敗しました。エラーコードは%dです\n",errCode);
return 1;
}
// HTTP プロトコル生成 & サーバに送信
sprintf(send_buf, "GET %s HTTP/1.1\r\n", path); // send_bufにGET path HTTP/1.1の文字列ができる \r行の先頭へ移動
// send(接続されたソケット,送信すべきデータへのバッファへのポインタ,,バッファのバイト数,オプション設定)
send(s, send_buf, strlen(send_buf),0); // 送信 送信オプションの指定はしない
printf("送信内容1:%s\n" ,send_buf);
009286
NGNGsend(s, send_buf, strlen(send_buf),0); // 送信 送信オプションの指定はしない
printf("送信内容2:%s\n" ,send_buf);
sprintf(send_buf, "\r\n"); // send_bufに\r行の先頭へ移動
send(s, send_buf, strlen(send_buf),0); // 送信 送信オプションの指定はしない
printf("送信内容3:%s\n" ,send_buf);
// 受信して表示
while (1){
// recv(接続されたソケット,受信データへのバッファへのポインタ,バッファのバイト数,オプション設定)
// 受信したバイト数が戻り値
numrcv = recv(s, recv_buf,sizeof(recv_buf)-1,0);
if ( numrcv > 0 ){
recv_buf[numrcv] = '\0';
printf("受信内容:%s\n" ,recv_buf);
} else {
break;
}
}
// ソケットのクローズ
closesocket(s);
// Winsockの後処理
WSACleanup();
return 0;
}
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGそんなに長いソース見てもらいたいならどこかにファイルで上げろ
009686
NGNGWindowsXP SP2で、C++ビルダー6.0で開発しております。
Unixだと結構書き直しがいるみたいでしたので。
Unixのようですが一応wgetとGPLも調べて参考にさせていただきます。
0097デフォルトの名無しさん
NGNG009886
NGNG0099デフォルトの名無しさん
NGNG自分のプログラムとの違いを調べてみれば?
その前にHTTPのRFCはちゃんと読んで欲しいが。
0100デフォルトの名無しさん
NGNGeNq9WNtrG1cafzf4fzhVsTPjjmMpUChObFZJ3DTUudlKk67teGVpLA2VR2JmbJOkLugc2NqOrUi2
HENh+xBCIWq2y1ISL7TJ0hKndZHpS8guIWkWFhy7D4tCH3YpfdjvO+fMRbbcpJRd8GV05rtfft93
9LJhJjLjSZ0csJ2kkd2b7m5uejlwZhlmasdhMmOMbDucNEw7m3hn37ZjKRGOkvqoYerk4OnXh3t7
jpN9r776SoR0dJDp7wsflr4r12iVxdgh9jYSw3HcSiXI9H+KZVotzc99WSy7pxPydOlW4YPlZ7RW
mKQr7F3gXGTnaLV8YfkZSjBMh4zFDVPBB5SlkUQ6bpE2lDAwpF7k4pa+LZaLW3N3BL29H+1hg+wk
G2EpWqW36ROwymG/AemX2Cg7yM6y42yWTbBzzU3prO3owNUmHwTzBSBJXfmc3iNHTxIWZWk2x87S
2vRNek2Imx8sXS1Vm5swWPFk0ho2TBJ4rjehEZ9uTXC18kEwxPIDzGJniZJ2nByhX9OvVNKI+0x/
9HA0FiWTdjwZd+L7MVQ8LrZuJodHxkcHZH6GfLlZulZaplvkjVgMXJpg8yzF+til5ZybOSkC4+Cx
ky4S6s0m4hk8DXFhxYelP9MVuuXGSLLl4k66jq1DkC9PXMpz8hw729w0btpGytSTxE5nLYfk8E8X
CdcLfhesTZXvz//ecwu1D9dpCKQJcguyPUPacvxdB61Of7MwPmuUB9yyEuWhW9ahbFIXAo6wGVDW
B79pWkNaT6WlJyZ2jeR1+rTwA/1TYePn44nqzPExKzGBzCgRbA2onM0s3pF9cnlm9seZz2ht3qbX
Zh9gmxijRIE89ztxyxnPKceib/acOdF3WNmnkbCqkVaZe1Ul0AQ56G9nVAn5DCik8JeyTVfpyqAZ
UqFGLN0Zt0zSHoHnKd5doEJ0aDeJEPUieni6r5dWCpMLm/RT+j29S69C5T1VeK+emvvyykNaQYo1
qM0tVUgAcMnopsI7MjKkgiwZsnaU2dw0Ko0DvIHYayQEAgitLKxAsm/QR3Qlf7DeQGkfGINt0An/
ecBNoN2ScLHKX9t2Im6Ogqzijbl/05v0bj1Tde6fdG3mNr0umSqlW/OPscLA+Kee7fDj2g62SeaQ
SlpbiUQqeEOrxY3FCpohCWhtIUZXoI+5CTsFtNghzS9bV1qLTde8Q1pb/Io+nv+QfgdiHCsxlmtg
B1FFWlw7Kq5+cOHy9PIfaA0dwmTmoJFQTNpSPBUa2dOxRw32yj3sFVq9tFH8O93EJoXozT6CyIpc
b9HrPIaut8LPmz4wY0/R2tJ99J2XT4681EWOn+7t5blGA3LnFaE7JzSDkumv59/zoZ5jBaFr0C52
HjquDU3fMxjeIwx1ddVET3hC0atgTF3hdINulk4ExCNJQPwU0TO2Ti665BWI3VWMXz4vgykY7sHp
NV7ovDx+TqtQVeovVRuoa5AMyENnXR5gtFSXyksVukZCnc/JQecvzIEE1biTNZTcKxGp1gNVGLUb
0101デフォルトの名無しさん
NGNG81I85adpN8BYJ4FsdYgSqs79rvAJXeVwBe1P/wjmfUqv7gIoUz5Oel3aYhMREOCXUAS8IuEaERnn
2XBnzeV/LT1Tjp70dgKc0Z6Eu/moXCOgHn6Ls5+0dfg7RhdJ6Q5+GDlvxsd0XhoonifCIwqkUs4q
YARgP6I7vXHb6bGsrKUg2444DbTYQxwr67aWB1Bq386u0DU+DtDNm/R2/mDd7FtvScpBIV2XmgNB
DIsgjuljtu4orYFlRwtrtnFBz4Il/qEq6k5sLLTGBmBA4tIVrduZ9tqGOTwaHzMy58HJ6OvDR4/3
xESNSPP53vYemyVzq5DkVaiqR1CBvE94XgKpqBU+oiueQtmOQOJNs9ssC4WXgg6vyWi3d6eH0RQM
Wut2u/gL2dcCZcF5xATSkFTbJlMjgQOYkClRS8G+e8nvOw48q4E22jGEF3+C562d4ZONmHaypq3g
B9QSBD36GeyPqy7qYQ3i0ilqkNTplNDgLqdd9bSibaBCQk4iF/IK16X2MYjjiBjJYHdQvpuVXXyQ
otq7bX6yzQ9ZvyASEaZ8H6oBauI5AXktrHrdLxpZbuXFW8Ub0gPwAZWDGKhsWYQa6T9x6M3h/lhf
T/QYrlxEJQd4tn5xW/pXEdT5on24swP9vchd6HFl5gdoa/Tw4T6339bz0TOGmcxO2p6/C98Uj4Hu
UzNfcKiE/mFT7C22SKuyj4giUBlEZzh0+UutGrgD4ZbMl6gqSEuBHA6bMpKJrGnqCUexNb5bjScc
71ZE2tQ60CCNMAPRb7e1UcomvzqA3N9taztmhrQGbkrFY1BYrgnyVgVGHOmJwRbHuTsieyODFodM
fzNwSekaUvIp5dJ6G0oFLPwYbg6DFmz7YrF8MP1w8ROx04IAhV+FBGLJ7GloEYT9b/RjNgo2nkNY
BzgbQXzkz3Kmapp3WnXhTmNHwdO32Ptssfh4YVPFDgctkCTfM7nFuweqFhYOoV7+x5dBqxya1iH8
gCn+UEWqxX8s6/RkZ4sNcSGaJ43jXoNwvgEICcSdLUkZSTl3OYrVx5OT8vf78fULRPN/6+SpF3aS
u7bdnf+3uX2NzEVQ/QHqCgBhabDwUXPTZNrI6ESJYAPy13hpbVSOyPacQnyROvQN8Gdz5coTurmQ
aW4SV2dAWW4ERMa9k7vrhvtZbY9oYW8eSbZuCdbeRV6cD7mLqB8jtABj5EbIE7s/uJWOWHr8HW+U
1H3DBIvNPITi7eamRCZr63KQ2KIggPKM+FINL6R4Z+Pf3xzK6HET7vU7N6z/Asib6Pk=
0102デフォルトの名無しさん
NGNGPOST するデータ本体を send していない。
POSTするデータのContent-TypeもContent-Lengthも送っていない。
そういうの無しでPOST動作可能なのCGI相手なら、上手く動くでしょ。
一般的にはPOSTでContent-TypeもContent-Lengthも無しで「うまく」動くCGIは無いと思うけど。
0103デフォルトの名無しさん
NGNGx-www-form-urlencoded 前提の CGI プログラムなら
大抵 Content-type なしで動くでしょ。別に薦めているわけじゃないけど。
0104デフォルトの名無しさん
NGNGこの場合の信頼性に関して情報が欲しい。
そういう設計を許すべきかどうかについて判断をする必要があるんだけど、
データの変更が他のクライアントへ反映されるタイムラグや
ネットワークの帯域の飽和時の挙動などの不安要素が大きいんで悩んでる。
0105デフォルトの名無しさん
NGNGそれ以外の用途には検討すらされない
0106デフォルトの名無しさん
NGNG> データの変更が他のクライアントへ反映されるタイムラグや
RDB使うかどうかに関係しない。
0107デフォルトの名無しさん
NGNGそれだとダメって言うときの決定的なセリフが見つからなくて
理屈こねられるとどうにも。
0108デフォルトの名無しさん
NGNG> データの変更が他のクライアントへ反映されるタイムラグや
> ネットワークの帯域の飽和時の挙動などの不安要素が大きいんで悩んでる。
が解決する理由を述べよ。
ODBCやJDBCを使ったシステムは、
> 通信手段としてDBを使
っていると考えることができる。
Information integrityをDBに任せる設計。
0109デフォルトの名無しさん
NGNGデータの変更を通知する場合、ソケットなら相手がフリーズしていれば
確実にタイムアウトするけれども、DBなら相手が止まっていても
データの挿入やNotify通知は入れられる。
そして、closeできた時点で相手がrecvしたことが分かる。
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNG> ソケットなら相手がフリーズしていれば
> 確実にタイムアウトするけれども、
…
0112デフォルトの名無しさん
NGNG受信すべき相手が死んでいても正常に送信できるのはやばくないかな?
0113デフォルトの名無しさん
NGNG接続処理をしている状態か、接続が完了し通信可能な状態か
0114デフォルトの名無しさん
NGNGインタフェース・メッセージとしてなら処理中の意味が強いのでは?
connecting...
の訳語として
ネットワーク動作の説明として文章の中に登場するなら後者の意味が強いかも
0115デフォルトの名無しさん
NGNGそりゃcommitされないでしょ。DBのトランザクション分からないの?
>>113
connectingとconnected。接続中は両方。
0116デフォルトの名無しさん
NGNGいや、データを受け取るべき相手が停止していて、
DBだけが動いてればcommitするでしょ。
目的がデータをDBに入れることではなくて、
DBを読み込んでいる相手に伝えることだとまずいでしょ。
0117デフォルトの名無しさん
NGNGエレベータを監視するプログラムA
玄関のドアロックを監視するプログラムB
があるとして、
「エレベータが一階で停止したら玄関のドアロックを開く」
これを実現するプロセス間通信の手段が
「オラクルでinsert into ドアコマンド(命令) values ('OPEN')」
だったら変だと思わない?
0118デフォルトの名無しさん
NGNG普通は「リクエストをDBに登録したら、先方はその応答をまた登録する」っていう設計になってると思う。
んで、一定の時間内に応答が無ければエラー処理。
まともなRPC使ってる人にしてみりゃDB経由ってのはバカらしいことが多いんだけれども、
いろいろな事情で接続性の低いアレコレをつなぐときにはよく用いられていると思う。
0119デフォルトの名無しさん
NGNG相手の読み取り確認をDB使ってやれば?
0120デフォルトの名無しさん
NGNG処理完了確認、ACK処理が極めて重要な位置を占めるから。
具体的な分散システムの例だと、OO初期の研究で有名なリスコフさんのArgusなど。
トランザクションRPCを基本処理としている。
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG要件にもよるんだろうけど、データの整合性や一貫性が重要な場合で、
DBMSを使わないことなんてありえないと思う。同程度の水準を自分で
書くなんて不可能とは言わないまでも、そうとう厳しいんじゃないの?
1リクエスト(1メッセージ)の応答時間がミリ秒単位を求められていて、
DBMSに問い合わせている時間がない、って場合はともかく、
複数台のサーバーで共有する場合なんかは必須になるでしょ。
DBMSだと基本的に毎回クエリ投げる形になっちゃうけど、キャッシュ
(専用DBMSやEJB等)で解決できる場合も少なくないだろうし、安易に
ファイルベースを選択するのもどうかと思うぞ。
>>122
それが必要になるのが、データの整合性の確保なんだよ。
トランザクションや2PCの考え方は理解してるの?
0125デフォルトの名無しさん
NGNG場合によっては重要なのは借方と貸方の整合性じゃなくて
相手の状況の確認と命令の確実な伝達なんだって。
火災報知機CPUからドアロック制御PCへ開けという命令がきた場合、
必ず即座に開錠しないと人が焼け死ぬでしょ。
0126デフォルトの名無しさん
NGNG> 借方と貸方の整合性
> 相手の状況の確認と命令の確実な伝達
同じ概念で包括的に考えられると気づけ
まあDBでなんでもってのも馬鹿げているけど、
>>109みたいな安易な考え方も設計上の問題は大きく、
実装じゃなくて、仕様自体不安定になりやすい。
0127デフォルトの名無しさん
NGNGソケットであれば少なくとも相手がlistenしていることは即座に確認できるわけで。
0128デフォルトの名無しさん
NGNGなんかそれぞれが目的や方向性の違う話をしているような希ガス。
もう一度、要件定義を整理してみようよ。
>>104
>part11でちょっとだけ出ていた通信手段としてDBを使うってネタなんだけど、
>この場合の信頼性に関して情報が欲しい。
>そういう設計を許すべきかどうかについて判断をする必要があるんだけど、
>データの変更が他のクライアントへ反映されるタイムラグや
>ネットワークの帯域の飽和時の挙動などの不安要素が大きいんで悩んでる。
0129デフォルトの名無しさん
NGNG( ゚д゚)ポカーン
0130デフォルトの名無しさん
NGNGという傍目の印象
0131デフォルトの名無しさん
NGNGだってサブシステム間の通信にDB使うなんて、ごくあたりまえに実装されてるもん。
ちょっと大規模なシステムのSIやらコーディングやらした人ならすぐピンとくる。
0132デフォルトの名無しさん
NGNGconnectingが「接続中」だとすると、connectedはなんて表現しましょうか。
接続維持中? なんかけったいな感じがするし・・・
0133デフォルトの名無しさん
NGNGconnection established
に対して「接続確立」とかあるけど
ネットワーク系の用語はケース毎に置き換えで対応してる感じだし
正確さとか明解さを重視すると英語そのままになる
0134デフォルトの名無しさん
NGNG「接続しています」→「接続しました」
「接続を開始します」
「接続の準備中です」
0135デフォルトの名無しさん
NGNGなんか、ウソでもいいからJISあたりに規格無いものかな
0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNGを確認するプログラムを作りたいのですが、どうやって起動しているか判断すればいいのでしょうか?
0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNGpingじゃだめ?
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNGポート全スキャンして、反応があるかどうかを確認する。
0142デフォルトの名無しさん
NGNG理由としてどのようなものが考えられますか?
ちなみに,パケットサイズは160としています。
0143デフォルトの名無しさん
NGNGしかもサイズ160って・・・
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNGまずUDPとは何かをよーく調べろ。
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG送信元PCのバッファから外に出て行ってない悪寒。
0155TCP
NGNG僕に頼めばいいのにぃ
マターリ砲発射!
_| ̄| (((●コロコロ
0156デフォルトの名無しさん
NGNGデータグラム型でデータの保障アリの・・・
0157デフォルトの名無しさん
NGNGそれはUDPだろ
データの管理は自分でサポートしなければいけないだけで
0158137
NGNG答えが返ってこなかったらとは具体的には何を実行して答えを待てばよいのでしょうか?
>>139
プログラム中でpingとかできるんですか?
>>140
こんばんわ
>>141
ポートスキャンすればいいということでしょうか?もしサーバが起動していなくても
ポートスキャンは可能なんでしょうか?
0159デフォルトの名無しさん
NGNGSOCK_SEQPACKET?
0160デフォルトの名無しさん
NGNGPF_INETにSOCK_SEQPACKETは無いだろ?
順序保障されたDGRAMがほしければRTP使えば?
ってのをどこかで見たおぼえはある。
0161デフォルトの名無しさん
NGNGICMP
0162デフォルトの名無しさん
NGNG> プログラム中でpingとかできるんですか?
pingは単なるraw socket programです。
0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNG遅れるか遅れないかは環境次第です
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGそのPCに届いたパケットのIPをチェックして特定のものを破棄する、というような事がやりたいのですが。
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGSOCK_STREAMで一度に送れるのは何バイトまでですか?って事ですから
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNGFilter-Hook Driver
0172デフォルトの名無しさん
NGNG何バイトか想定してはいけない。
0173デフォルトの名無しさん
NGNG実装依存、環境依存。
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNGしてるってのがあったんだけどどうやるの?
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGお名前.comで代行サービスもやってるけどな
http://www.onamae.com/other/news/onamae/#041214
0178デフォルトの名無しさん
NGNG0179175
NGNG0180デフォルトの名無しさん
NGNG0181175
NGNG0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG0184175
NGNG0185デフォルトの名無しさん
NGNGDNSがいるから名前が引けるんだよ
0186デフォルトの名無しさん
NGNG可能だけど、それやっちゃうとアドレスとしての意味がなくなるわけだからグロ
ーバルでは無理。
確か「24」って何かのときに出てきたスクリーンに8bit超える数字がIPアドレスで
使われたりしたからあんまり技術面に詳しくないんだろうなと思った。192.0.2.x
を使うべきなんだけどね。
0187デフォルトの名無しさん
NGNGそれは私の所有するアドレスです。勝手につかわないでください。
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGスレ違いな上に内容も浅い。
0190175
NGNG0191デフォルトの名無しさん
NGNG24のとは違うけどモデム経由でuunet接続すれば、メールやNetNewsに
限ってはIPアドレスなしのドメイン名でアクセスできる。
いまだに運用されている地域があるかどうかはわからないけど・・・
0192デフォルトの名無しさん
NGNGっていうか
漫画とかで車のナンバーが5桁になってたりするのと同じで
実アドレスにならないようにわざとはずしたんじゃないかと。
0193デフォルトの名無しさん
NGNGjavaやUNIXでは行単位で受信する方法がありますが、WinSockで
同じようなことをしようと思ったら手作りするしかありませんか?
sockstream >> recvbuff; とか、sock.getline(recvbuff); の
ような使い方ができるものがあれば使いたいのですが・・・
# MSDNを見た限りでは、見当たらなかったので。
0194デフォルトの名無しさん
NGNGJavaはラップしてるだけだし。
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNGとか
192.1.x.x
とか
192.2.x.x
が設定されている環境を何度か見たけど、
このあたりがローカルIPだという迷信はいつ頃広まったの?
0197デフォルトの名無しさん
NGNGそういう噂を広めた人に聞かないと
0198デフォルトの名無しさん
NGNGsocketをfdopenすれば、あとはfgetsでいけたりする。
0199デフォルトの名無しさん
NGNG問題は、それがsocketの機能なのか、ということ。
「行」の扱いは、stdioのライブラリがやってることだろ。
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNGくだらない突っ込みではない
的確な解決法というわけですね。
0203193
NGNGいろいろどうも。
0204デフォルトの名無しさん
NGNG↑また馬鹿が登場した。
0205デフォルトの名無しさん
NGNG人をバカにするだけで役に立たないやつ。
0206デフォルトの名無しさん
NGNG不便だ。
0207デフォルトの名無しさん
NGNGが、、fdopen()等がHANDLEを受けるインターフェースじゃないので渡せない。
0208デフォルトの名無しさん
NGNGそれは、Winsockが出始めたころの話。
いまは、同じだよ。
0209175
NGNG0210デフォルトの名無しさん
NGNG_open_osfhandle( )して_fdopen( )
Windowsってややこしいね。
STLPortのbasic_fstream::open( )はハンドルを受け取るバリエーションが
あったと思った。
それが、Windows HANDLEか、CRTのファイルハンドルか
stdioのFILE*かは忘れた。
STLPortの拡張で標準にはないね(たしか)。
いずれにせよ、SOCKETを_open_osfhandle( )かfdopen( )かそのままか
してbasic_fstream::open( )にすれば、
>>193 のやりたいことはできると思う。
0211デフォルトの名無しさん
NGNGttp://www.networksorcery.com/enp/rfc/rfc3330.txt
0213193
NGNG情報ありがとうございます。
XP Pro SP2環境でWinSock2.0で試しに以下のように書いてみました。
特にエラーはでないのですが、fgetsでまったくデータを読めません。
recv関数に置き換えると読めます。
通信相手からはCRLFの付いたデータを送信しており、受信側がデータ
を読めないときでも送信バイト数分きっちり送りきっています。
fgetsをfreadに変えて読取りバイト数を確認すると0バイトでした。
何か勘違いをしているのかと思いますが、お気づきの点があれば
ご指摘願えないでしょうか?
connect(sock, ...);
int handle = _open_osfhandle(sock, _O_RDONLY | _O_BINARY );
if(-1 == handle)
{
printf("_open_osfhandle = %ld\n", GetLastError()); exit(-1);
}
FILE* fp = fdopen(handle, "r");
if(NULL == fp)
{
printf("fdopen = %ld\n", GetLastError()); exit(-1);
}
setvbuf(fp, buffer, _IOFBF, sizeof(buffer));
char recvbuff[81]; memset(recvbuff, '\0', 81);
fgets(recvbuff, 80, fp);
printf("[RECV] %s\n", recvbuff);
0214デフォルトの名無しさん
NGNGそれがSunのグローバルIPとかぶってたせいで
Sunのサイトにアクセスできないという物凄い環境もありますた
0215デフォルトの名無しさん
NGNGワロタ
0216デフォルトの名無しさん
NGNG192.0.0.0/24 - This block, corresponding to the numerically lowest of
the former Class C addresses, was initially and is still reserved by
the IANA. Given the present classless nature of the IP address
space, the basis for the reservation no longer applies and addresses
in this block are subject to future allocation to a Regional Internet
Registry for assignment in the normal manner.
192.0.2.0/24 - This block is assigned as "TEST-NET" for use in
documentation and example code. It is often used in conjunction with
domain names example.com or example.net in vendor and protocol
documentation. Addresses within this block should not appear on the
public Internet.
とは関係ないのですね。 :-)
0217デフォルトの名無しさん
NGNG俺も全然知らないんだけど、、
まず、_open_osfhandle()で得たhandleで_read()が出来るか、から試してみたら?
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/bsd-compatibility.html
0218デフォルトの名無しさん
NGNGワロタ
0219デフォルトの名無しさん
NGNG作成したいと思っています。
当初案としては…
whoisコマンドで得られる項目「country」や「address」
を元に判断しようと思っていたのですが、
1.1つのwhoisサーバで検索できる範囲が決まっている。
2.whoisサーバが大杉。
3.whoisサーバがコロコロ変わる。
4.whoisサーバのレスポンスがサーバごとに異なる。
5.複数のwhoisサーバを使い分けるプログラムを書くのは激しく面倒。
一部のwhoisサーバは副問合せを実行して、他のwhoisサーバからの
レスポンスを返してくれるものもあるようなんですが。
ということで、他に何か良い手立てはありませんかねぇ。。
そんなに判定精度を求めるプログラムではありません。
・もうすでにそういったプログラムをOSSとして配布してたり
・全てのIPaddressに対して対応しているwhoisサーバがあるとか
どなたかよろしくお願いします。
0220デフォルトの名無しさん
NGNGネームサーバでIPアドレス逆引きして、FQDNの終わりの.jpとかで
判断する方法ではどうでしょうか?
0221219
NGNGレスどうもです。
その方法だと逆引きできないIPアドレスに対しては
判断できないためちょっと難しいです。
日本国内が中心であれば、大概は逆引きできるのですが、
外国のIPアドレスは逆引きできないのが相当な割合で
存在します。私が持っているものでは半分以上は
逆引きできませんでした。。。
言葉足らずで申し訳ないです。。
0222デフォルトの名無しさん
NGNG普通arinに訊いてそこになかったら他の三つに回してくれるし
それで再検索かければ国名までは分かるだろ
0223デフォルトの名無しさん
NGNG0224219
NGNGサンクスです!
今までJavaで作成したテストプログラムで
whois.arin.netに問合せをしたときは1回しか
問合せをしてくれなかったので、勘違いしてました。
DOSプロンプトでwhoisコマンド叩くと確かに
副問合せをしてくれますね。いくつか試したところ
全部問合せをしてくれました。素晴らしい。
なぜ自分で作成したプログラムだと副問合せを
しないのかは謎ぉ〜
>>223
どこかのサイトで商用として(Apacheログから
所在国を判断するため?)有料で売ってたところは
あったような気がしますが、無料でもありますかねぇ。。
0225デフォルトの名無しさん
NGNG> なぜ自分で作成したプログラムだと副問合せを
> しないのかは謎ぉ〜
だから返ってきたorgID見て他の三つなら自分でそっちへまたリクエスト送るんだよ
0226219
NGNGなんと!そういうことでしたか。DOSプロンプトの
whoisコマンドは勝手に副問合せをしてたのですね。
whois.arin.netが勝手にそっちに問い合わせてくれて
返してくれるのかと思ってしまいました。
となるとちょっと疑問。
・orgIDと問合せ先のサーバNameの対応表はどうなるんでしょう?
・各サーバに自分で問い合わせるとなると、
やっぱり各サーバごとにレスポンス形式(フォーマット)は
異なってしまうのでしょうか?
(counry項目だけでは国が判断できなくなったりするのかなぁ・・)
どなたか教えてくださいませんか。
0227デフォルトの名無しさん
NGNGperlにまんまwhoisってモジュールがあったり。
ソースコード見れば参考になるかも。
0229デフォルトの名無しさん
NGNGARIN、LACNIC、RIPE、APNIC。それが分かってないんだろ。
0230TLDで
NGNGってのが…
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNGETag:ってなんなんでしょうか?
チェックサムみたいなものと思うんですが
Etagを算出するコードはどうやってかくんでしょう?
0236デフォルトの名無しさん
NGNGHypertext Transfer Protocol -- HTTP/1.1
http://mlv.lolipop.jp/W3C/HTTP/spec/rfc2616_ja.txt
>>5のページはリング切れだな。
0237デフォルトの名無しさん
NGNGつーか、いまどきは whois-servers.net から CNAME ひっぱって、
そこに whois して終わりだろう。DOS の whois が対応しているか
どうかは知らんけどね。
0238210
NGNGそんなバカなと思って、いろいろ試したら
ReadFile(ReadFile((HANDLE)socket, buf, sizeof buf, &read_size, NULL)
するとERROR_INVALID_PARAMETERで失敗するのね。
MSDNのReadFileの説明にはsocketが適応できるようなことかいてあるし、
ERROR_INVALID_HANDLEでないから、どこかパラメータが気に入らないんだろうと
あれこれやっていたら、なんとReadFile()の最後の引数にOVERLAPPED構造体を
指定してやるとOKになることがわかった。
Cランタイムルーチンでもおそらくこれが引っかかってるんだろう。
(Cランタイムルーチン内部ではReadFile()の呼び出しで
OVERLAPPED構造体をNULLにしている)
なぜ?と思ったら
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/default_state_for_a_socket_s_overlapped_attribute_2.asp
てなわけか。
socket()の呼び出しは、WSA_FLAG_OVERLAPPEDをセットする。。。
だからOVERLAPPED構造体を要求するのか。
なので、最初のsocket()の呼び出しを
WSASocket(AF_INET,SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0)
にしたらうまく行ったよ。
socketを_open_osfhandle()してfdopen()してfgets()で
改行までをバッファリングして戻るようになった。
しかしwinsockって、だせえ実装だな、おい。
なんでsocket()はWSA_FLAG_OVERLAPPEDをセットするんだ?
>>microsoft
0239210
NGNGReadFile(ReadFile((HANDLE)socket, buf, sizeof buf, &read_size, NULL)
は
ReadFile((HANDLE)socket, buf, sizeof buf, &read_size, NULL)
のまちがいね。
0240デフォルトの名無しさん
NGNG> >>microsoft
リンク先に書いてあるじゃないか。
backward compatibilityって。
0241193
NGNGありがとうございます。socket()の代わりにWSASocket()を使うことで、
fgetsでデータを読めるようになりました。
こちらも_open_osfhandle()で得たhandleでの_read()を試したのですが、
同様にGetLastError()で[00087: パラメータが間違っています。]が戻って
いたため、いろいろ実験していたところでした。
WSAStartup()でバージョン指定するのだから、socketも下位互換性のある
ものとWSA_FLAG_OVERLAPPEDをセットしないWSASocket()を呼び出すものに
切り替えてくれればいいのに、と思ってしまいました>Winsock
ともあれ、>>238さんのおかげでUNIX用ソースをあまりいじらずWinに持って
いくことができました。感謝いたします。助かりました。
0242238
NGNG0243デフォルトの名無しさん
NGNG間違いを探そうにも結構ページが多いので・・・
0244デフォルトの名無しさん
NGNG「こんなページダメだ。俺が代わりに書いてやるよ」つって結局音沙汰なし。
どこが間違いなのかもはっきりと提示してなかったと思うよ。で、スレ立て人が
ああいう書き方をしたと。
間違いがないとは思わないけど (ちゃんと内容は見てないが)、間違いあるかもね
と思いながら見てればいいんじゃない?
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG●買いなよ
0249248
NGNGどうやら粘着っぽいのも混じっているようだし、なんだかな。
ちゃんと問題点を提示できるなら (あるいは返り血見てないのが致命的だと
思うなら) テンプレから外せば?
思わせぶりなこと書くから、この話題が何度も出てくるんだよ。
0250デフォルトの名無しさん
NGNGテンプレ、あれはあれでいいんだよ。
0251デフォルトの名無しさん
NGNGそれは逆で、テンプレにない時には、何度も推薦する奴が出てきたんだよ。
結構な量書いてあるから、かわいそうな気もするけどね。
0252248
NGNGもう 3回くらい見たような気がするもん。
「返り血チェックが甘いなど、まずい点があることに注意」とか書いとけば
いいんじゃね?
0253デフォルトの名無しさん
NGNGあんた、何もわかっちゃいねえよ。
0254248
NGNGうん、わからんねぇ。
テンプレに書く価値がないなら削ればいいし、テンプレに書いてもいいけど
問題があるっていうことなら、こういうところがダメって書けばいいだけ
じゃないの? 違うの?
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG> こういうところがダメって書けば
マンドクセ
0258デフォルトの名無しさん
NGNG無内容なレスで粘着する暇と気力はあるのにな。
0259デフォルトの名無しさん
NGNG批判する側にある。
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNG指摘したらそれが批判の対象にさらされるのがわかっていて
嫌がってるだけでしょ
批判する人は批判する人の性質をよくわかっているだけにね。
0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNGそれすらもマンドクセ、か?
0264デフォルトの名無しさん
NGNG0265いいかげんうざい・・・
NGNGやれやれ言ってるだけで何もしないやつも糞。
特に後者は役に立つことを言ってるつもりになっている分特に有害。失せろ。
0266デフォルトの名無しさん
NGNGイミフメ
0267横やりすまそ。
NGNGなにか問題があったらその時に嫌でも気付く。
「どこが問題なの?」とか言ってる香具師は自分では何も組んでいない
と言っているようなもんだと思うのだが。
それはさておき、技術スレが技術と関係ない話題でレスを消費するのは
困るのでここらへんでやめてはくれないか?>議論している人
0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNGこちらで質問させて頂きます。
C言語のacceptのエラー処理で、
while (1){
struct sockaddr_in client_sin;
memset((void *)&client_sin, 0, sizeof(client_sin));
len = sizeof(client_sin);
accepted_socket = accept(listening_socket, (struct sockaddr *)&client_sin, &len);
if (accepted_socket == -1) {
if (errno != EINTR && errno != ECONNABORTED) {
perror("accept");
exit(1);
}
continue;
}
break;
}
と、書いてみたのですが、
acceptの正しいエラー処理がわかりません。
どのような処理を施せばよいでしょうか。
0270デフォルトの名無しさん
NGNGというか、なぜ正しくないと思ったの?
0271デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNG何の関数を使えばできるのでしょうか?
結構いろいろ調べてみたのですが、わかりませんでした。
宜しくお願い致します。
0274デフォルトの名無しさん
NGNG断片的・場当たりに検索してすませるんじゃなくて
ちゃんと解説した本を買って通読するのを強く勧める。
きっと間違えてる部分や解決したつもりで穴になってる部分が沢山あるだろう。
0275デフォルトの名無しさん
NGNGUNIX なら recvfrom の引数 (struct sockaddr *)。Windows は知らん。
>>274
このスレの存在意義ないじゃん。
0276デフォルトの名無しさん
NGNG> >>274
> このスレの存在意義ないじゃん。
正気か?
0277275
NGNG0278デフォルトの名無しさん
NGNGここで高度な亊聞いても、誰も答えられないじゃん。
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNG> 亊
なぜ俗字? (旧字じゃないよね?)
0281デフォルトの名無しさん
NGNG卑怯者の論理だな。
0282デフォルトの名無しさん
NGNG必要な知識は質問されるとは限らないってことがわからないということは、
>>275は人を使った経験はないのだろうな。
0283デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNG「基礎的な事」をNGワードにしている奴がいるかもしれないから。
0286デフォルトの名無しさん
NGNG0287275
NGNG> 必要な知識は質問されるとは限らないってことがわからないということは、
必要な知識は、必要になったときに身につくもの (基礎知識が
備わってれば)。
おまいさんがわざわざ質問者のためを思って勉強の機会を作って
やる必要はない。答えたくないなら黙ってろ。ウゼー
0288デフォルトの名無しさん
NGNGパラメータも知らないでどうするよ?って事だろ。
0289デフォルトの名無しさん
NGNGC 以外で recv ってるとか (perl なんかは戻り値で返される)。
まぁ推測でしかないけどね。
0290デフォルトの名無しさん
NGNGどうすればいいんですか、とかそういう釣りだろ。
0291デフォルトの名無しさん
NGNGrecvfromの引数の意味を知らん奴にそれを期待するのは無理があるような。
273のような質問者に対して当然指摘すべき注意もしてないし。
自分も場当たりな寄せ集め知識だけで生きてきたもんだから
自分が攻撃されたように感じて慌てて飛び出したって感じがするな。
0292デフォルトの名無しさん
NGNG全くネットワークプログラミングをやった事無い人が、突然UDPでコードを書く時に
キッカケとなる知識を得ないと不安でしょうがなくなる。どんなに簡単な事でもね・・・
その最初のキッカケがrecvfrom()の引数だったか、WinSockの初期化だったかは人によるだろうけど・・・
素質の有る人は、そのキッカケさえつかめば自力で知識を蓄積していけるよ。
俺も、昔聞いたさ
「DirectXの*.xファイルを読み込んで表示するにはどうすれば良いんですか?」
そんな俺も今や3Dエンジンを組むプロだよ。
0293デフォルトの名無しさん
NGNGクックロビン音頭が消えてるんですが、どなたか補完お願いします。
0294デフォルトの名無しさん
NGNGおしえて!!!!!!!!!1
0295デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNGワロス
0298デフォルトの名無しさん
NGNGこのような場合、送信のソケットと受信のソケットを
別々に持つ必要があるのですか?
初歩的な質問で申し訳ございません。
0299デフォルトの名無しさん
NGNG0300298
NGNG0301デフォルトの名無しさん
NGNG電話機=ソケット
0302デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNGsocket()の帰り値を使って読み書きできます。
0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNGsocket()? ???? ??? ?? ?? ? ? ????.
0309デフォルトの名無しさん
NGNGusing an object - called socket - returned by socket() function call.
0310デフォルトの名無しさん
NGNG|i l |i l| li |
∩
_,,..,,n,r'゙ <⌒つ
./ ゚ 3 ヽ )´
) l ゚ ll ∩ ノ そ
Σ `'ー---‐'' (
⌒ヽ/V⌒v、/⌒ ビダァァァン!!
_,,..,,,,_
./ ゚ 3 `ヽーっ
l ゚ ll ⊃ ⌒_つ
`'ー---‐'''''"
0311デフォルトの名無しさん
NGNGWindows、VC++ において、ネットワークプログラミングを解説している本、
またはサイトはありませんでしょうか?
UNIX における C言語を用いたネットワークプログラミングなどはよく見かけますが、
例えばポートを監視するとき、while 文でまわす代わりに
SetTimer などを使ってメッセージ処理をしないのか、とか、
ファイル入出力を扱うのに CFile があるように、
ソケットを扱う便利なクラスはないのか、などといった疑問が残っており、悩んでいます。
0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNGacceptの再にスレッド起動、クライアント切断時にスレッド終了
0314デフォルトの名無しさん
NGNGCAsyncSocket
0316デフォルトの名無しさん
NGNGんなこたーない。J2SE 1.4にNIOが加えられた必然性は何?
マルチスレッドで正確に作る難易度の方が低いとは思えない。
0317デフォルトの名無しさん
NGNGルータに任意(もしくは指定された)ポートを空ける必要が
あるかと思います。
これは、クライアントPC(ローカルPC)で起動している、
アプリ(P2P,ネットゲーム)が空けているポートと一致させる
必要があります。
で、この空けているポートですが、なぜ、空ける必要が
あるのでしょうか?
下に続く...。
0318デフォルトの名無しさん
NGNG他のPC上で動作しているアプリと通信するために、
ポートを空けることは分かっています。
...ここまで書いて申し訳ないのですが、
P2Pはこの話からはずしてください。
ネットゲームもしくは、C/S形式のアプリに限定させてください。
下に続く...。
0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNG通信経路を確立すれば、ルータにポートを開ける
必要がないのではないのでしょうか?
1.クライトから、サーバへ接続要求する。
2.サーバはクライントに接続応答する。
上記、1,2で、クライントに待ち受けポートが
出来上がると思います。
この、勝手に出来る(?)ポートで、通信を行えば、
よいかとおもうのです。
確かに、この勝手に出来る(?)ポートは、
ルータでポートを開ける必要があるのですが、
これは、ルータの設定次第ですが、勝手にポートが
開くと思います。
しかしなぜ、ネットゲーム等は、固定のポートを
あける必要があるのでしょうか?
0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNG例えば、winny2であれば、自分のIP&Portを
他のwinny2ユーザに教えますよね。
(教えなくても使えますが...。)
これは、他のユーザ(IP&Portを教えてもらった方)が、
教えてもらったIP&Portに対して接続を行い、
ファイル検索&ファイル転送を行うために使用される為だと
思います。
言い換えれば、
『IP&Portを公開しているwinny2ユーザがサーバとなり、
公開さしているIP&Portに他のwinny2ユーザが接続することで
他のwinny2ユーザがクライアントとなり、ファイルを共有する。』
※話は変わりますが、ここまで書いていて思ったのですが、
P2Pとは、
「ネットワークに接続されている何れのノードもサーバになりえる」
ということなのでは?
となるかと思います。
下に続く...。
0324デフォルトの名無しさん
NGNGPort0
0325デフォルトの名無しさん
NGNG1行目:…すみなせん。⇒すみません。
7行目:…使用される為だと⇒使用される物だと
11行目:…公開さしている⇒公開している
以下、続き。
>>323で書いている内容が間違っていなければ、
『ネットワークを介して他のノードから接続を
受けるようなアプリは、サーバとしての
位置付けが要求されるような場合』
となります。
だとすれば、なぜ、世にあるネットゲームは、
ポートを開ける(≒サーバになる)必要があるのでしょうか?
長くなってすみません。で、TCP/IP接続での話です。
0326デフォルトの名無しさん
NGNG非同期I/Oは、10Kスレッド問題を回避するのが最も大きな目的でしょう?
作る容易さのためじゃないと思うよ。実際デバッガは非同期I/Oの相手が苦手。
0327デフォルトの名無しさん
NGNG一度でも、クライアントサーバやP2Pのソフト作ってみればわかるよ
0328デフォルトの名無しさん
NGNG>2.サーバはクライントに接続応答する。
>上記、1,2で、クライントに待ち受けポートが出来上がると思います。
0329デフォルトの名無しさん
NGNG作ったことありますよ。
その上でのことです。
質問ですが、端的にいうと、
『なぜ、クライアント側が待ち受け専用ポートを作る必要があるのか?』
~~~~~~~~~~~~~~~~
『専用ポート』が重要なのです。
>>328にもあるとおり、クライアントとサーバへ接続が確立されれば、
クライアント側にもポートができあげる。そのポートを使って、
データの受信を行えばよいと思うのです。
0330デフォルトの名無しさん
NGNG>>327
作ったことありますよ。
その上でのことです。
質問ですが、端的にいうと、
『なぜ、クライアント側が待ち受け専用ポートを作る必要があるのか?』
~~~~~~~~~~~~~~~~
『専用ポート』が重要なのです。
>>328にもあるとおり、クライアントとサーバへ接続が確立されれば、
クライアント側にもポートができあげる。そのポートを使って、
データの受信を行えばよいと思うのです。
0331デフォルトの名無しさん
NGNG書いたプログラムも不必要な再送ロジックばかりの人。
0332デフォルトの名無しさん
NGNG専用ポートの要らない実装も十分考えられるし、実際にあるんじゃない?
ただ、コマンド・レスポンス的に行われるサーバとの対話と別チャネルでサーバ側から
一方的な通知を行おうとすると、1本のチャネル上に仮想的に複数チャネルを構築するより、
受信専用ポートで通知を受けたほうが楽だから使ってるんでは?
あと世にあるネットワークゲームはサーバ・クライアント間でTCP/IPでコネクション張って、
って風には作ってないものも多いと思う。実際にやってみたならわかると思うけど、UDPも
結構ちゃんと届くことが多いし、その場合やっぱりTCPよりずいぶんリソース的に軽いから。
0333デフォルトの名無しさん
NGNG作った事が無いのがバレバレですね
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNG>>333ほんとに作ったことあるよ。
クライアント:Flash(XMLソケット)
サーバ :Java(NIO)
>>335自分の考えを疑ったのですが、答えが出ませんでした。
何か解っていることがあれば、教えてください。
>ただ、コマンド・レスポンス的に行われるサーバとの対話と
>別チャネルでサーバ側から一方的な通知を行おうとすると、
>1本のチャネル上に仮想的に複数チャネルを構築するより、
>受信専用ポートで通知を受けたほうが楽だから使ってるんでは?
こういうレスがほしいです。
0337デフォルトの名無しさん
NGNGポート開けて個々のPCがサーバとして(というと語弊あるが)しないと
1つのサーバで全てのクライアントのファイル転送やったと考えたら
どんだけ太い回線でも辛いだろ
0338デフォルトの名無しさん
NGNGバイバイ。
0339デフォルトの名無しさん
NGNGそのとおりだと思います。また、回線速度だけではなく、
1.クライアントAからサーバに共有ファイルをアップ。
2.クライアントBがサーバから共有ファイルを落とす。
となった場合、サーバへの負荷も考えると、直接、
クライアント同士(A、B)がやり取りする方がよいと思います。
しかし、それは、P2Pアプリ(winny2等)の場合だと思います。
>>332にある、
『コマンド・レスポンス的に行われるサーバとの対話』
には、受信専用ポートは必要ないと思うのです。
なぜ、クライアントからサーバへ接続する際に出来上がる、
ポートだけで通信を行わないのでしょうか?
⇒言い換えれば、どうしてサーバからクライアントに
対して接続を行う必要があるのでしょうか?
0340デフォルトの名無しさん
NGNG0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNG>たとえばユーザAとユーザBがアクションゲームのような
>即時性が要求されるゲームをしたとします。
>通常の場合、ユーザBはユーザAの状態をサーバを通して
>知ることになります。
>サーバを通過する必要があるということは、
>そこで遅延が発生する事になります。
>ユーザAが必殺技でユーザBを倒したはずなのに遅延の影響で
>逆にユーザBに倒された、なんてことがあるかもしれません。
>仮にゲーム情報がユーザAとユーザAでP2Pでやり取りできれば
>ユーザ間の情報の遅延が少なくなり、このような即時性が
>要求されるゲームは作りやすくなると思えます。
(ttp://homepage3.nifty.com/toremoro/p2p/trend2.html から抜粋)
こういうことなら解ります。
各ユーザ(クライアント)がポートを開ける必要がある。
他にある?
0343デフォルトの名無しさん
NGNG何が納得いかないんだ
言ってみろ
0344デフォルトの名無しさん
NGNGぎゃー、ほやで何回も言ってるやん。
説明が下手なんかな〜。
『コマンド・レスポンス的なネットゲームを作ろうとした場合、
・サーバ :クライアントからの接続要求を受けるポート
・クライアント:サーバとの接続が確立された際に作成されるポート
で、十分だと思う。
(クライアント側のサーバとの接続が確立された際に作成されるポートで
サーバ⇒クライアントのデータは受信できる。)
しかし、世のネットゲームは、上記のポート以外にクライアント側が
他のノードから接続できるようなポートを準備しているがそれはどうして?』
って聞いてるんやん。
ネットゲームってあんまりせんけど、してる人ってこいうの疑問に思わないん?
訳も解らず、ルータのポート開けてるん?
訳も解らず、ネトゲーのアプリインストールしてるん?
訳も解らず、質問してる俺は、アホー?
訳も解らず、ドンキに火つけてるのは誰や!!
訳も解らず、ドンキは警察に怒られてるのはどういうことや!!
火付けたやつが悪いんや!!そんなんあたり前や!!
っと、思うよ〜。
あと、訳解らんレス大杉。
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNGホームラン級の馬鹿だな
0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNGな〜、教えて。どこが抜けてるん?
な〜、教えて。
はっ、は〜ん、さてはおまえも解らんのやな〜。
って煽ってもムダなん?
0350デフォルトの名無しさん
NGNGそんなんじゃなくて、教えて。馬鹿なら馬鹿でいいから。
解ってるから、そんな風に言ってるんやろ?
なら、オシエテー。
>>347はぁ〜、寂しいなぁ〜。自分、そんなん言われたら、
かなり寂しいよ。
>>348かしこまった言い方が面倒になった。
ってか、解ってるやついるんなら、答えて欲しんやけど。
0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNGP2Pでなくて、中央のサーバ噛ますネットゲームなのに、なぜ
クライアント側がポートに穴開けなければいけないの?ってことだよね?
0353デフォルトの名無しさん
NGNGだまれ
0354デフォルトの名無しさん
NGNGなんでなん?
>>353お前がだまっとれや
0355デフォルトの名無しさん
NGNGサーバーが50万個のコネクションを維持すれば良いだけだろ?」
と言っているようです。
0356デフォルトの名無しさん
NGNG俺ネットゲーやったことないからそこまで分からん。そのゲームの仕様で、
P2Pを使うこともあるからじゃないのかな?発売元に問い合わせてみたら。
一切P2P使わないゲームで中央サーバが一括管理してるならポートに穴
開ける必要は無い。クライアント側(プレイヤー側)は、中央サーバに接続しに
いけばいいだけだから。
0357デフォルトの名無しさん
NGNG>>356わからんなら口をはさむなボケが。
0358デフォルトの名無しさん
NGNGパケットキャプチャとかで何やってるか観察してみりゃいいじゃん。
0359デフォルトの名無しさん
NGNGJavaアプレットだったりするし。
0360デフォルトの名無しさん
NGNGだって、サーバー側からの「何かが起こったよ」という通知はどうするのさ。
クライアント側から張ったTCPのコネクションを維持するか
サーバー側からUDPorTCPでクライアント側にデータを送信するかしかないのに。
ポートを開けない=後者のやり方は不可能なんだから
「全ユーザーとのセッションを維持しつづける」以外にどうしろと。
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNGやっと >>350 が何を言ってるのかが解った。
このままでは気になって夜しか寝られないところだった。
0363デフォルトの名無しさん
NGNG支離滅裂な日本語を解読するための、無駄な労力を使おうなんて思わないし。
0364いややね、なりすまし ◆ztMasRA.j2
NGNG>>360このレスもいいね。すごくうれしい。
2つをまとめると、
『サーバ側でたくさんのコネクションを保持しつづけるのは
厳しい。だから、クライアントからのコネクションを
保持し続けずに、サーバ側からクライアント側に何かを
伝えるためにクライアント側に口を開けてもらっておいて、
サーバ側からその口に向かってデータを送信する。』
ってこねやね。
ここで気になるのは、
『サーバ側がクライアント側にデータを送信する際、
毎回、接続を確立する必要がある。』
やねん。これって、時間かかるんとちゃうの?
>>356そうやねん。俺もそう思ったん。でも、↑のことが
問題らしい。
>>358実際のネットゲームはした事ない。
したいと思えない。でも、仕組みは気になる。
言い訳やね。でも、ログみても俺には分からんと思う。
あ〜、これも言い訳やね。ごめん。
>>357お前は誰やねん?トリップつけたろ。
いややね〜、成りすまし。あ〜いや。サブイボでてくるわ。
0365デフォルトの名無しさん
NGNG> 毎回、接続を確立する必要がある。』
UDPなら(少なくとも毎回は)やらなくてもOK。
漏れ小規模にUDPのクライアントを抱えるサーバを運用してるけど、
そこそこちゃんと届くからちゃんと作ればやっぱりTCPより効率良いよ。
少なくともサーバ側リソースという観点では。
0366いややね、なりすまし ◆ztMasRA.j2
NGNGこれからは、気をつけますね。
でも、ま〜、分かったんならええやん。な、ええやろ。
>>365良いよ。これも大変良い。
俺、UDPって使ったことないから、よう知らんのやけど、
やっぱ、TCPより軽いんやね。
と、>>365を読んでいてまた疑問が沸いてきたわ。
>>364でも書いたけど、サーバ側でクライアント側からの
接続を保持しつづけないとしたら、
クライアント⇒サーバ
へのデータ送信も毎回、クライアントからサーバへコネクションを張ってるん?
(UDPはコネクションを張らなくてもいいことは今、教わったから分かってる。)
もし、この脳内仕様(←この言葉気に入ったから使わせてもらうわ)が正しければ、
俺がずーっと質問していた、クライアント側にポートを開ける必要のあるネトゲーは、
クライアント⇔サーバ間の通信はTCPではなく、UDPを使うってことになると
思うやけど、おうてますか?
0367デフォルトの名無しさん
NGNGあっていない。
UDPではなくTCPのポート開けるように求めているゲームがあるだろ。
0368デフォルトの名無しさん
NGNGどれくらい負担なんでしょうか。
起動できるワーカープロセス数(W)
ワーカープロセス当たりのTCPに使える最大デスクリプタ数(D)
から単純に計算すると W*D ですが、
OSが保持できるコネクションの数(C)に制限はあるのかな?
カーネルでTCPに利用できるメモリ量(M)
コネクションあたりのカーネルのメモリ使用量(m)として、最大同時接続数は
max(C,W*D,M/m)
ってところでしょうか?
ネトゲのサーバとかって大体一台で最大同時接続数をいくつくらい受けつける
ようになってるものなんでしょう(アクセラレータを抜きにして)。
0369デフォルトの名無しさん
NGNGUDPで何か作ったことあるならわかると思うけど、単一のUDPパケットでは送れないような
(あるいは送りたくないような)データを送る最も単純な方法は、TCPを使うことなわけ。
もちろん「何らかの自前プロトコル over UDP」でもいいんだけど、たまにしかこういうことが
起きないとするならほんの少しの効率の低下を受け入れてTCPを使っても良いわけだし、
TCPは既に実装されていて、バグフリーでタダで使える。
世界一大規模に使われている分散DBであるところのDNSプロトコルもそうしている。
0370デフォルトの名無しさん
NGNG一度読んだら?
0371デフォルトの名無しさん
NGNGおい、DNSはTCPも定義されているけど、(domain=53)
使われているのは事実上UDPのみだ。
0372デフォルトの名無しさん
NGNGうん。だから
>たまにしかこういうことが起きないとするなら
と書いてるわけ。
0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNGそもそも何言っているのか知る気を起こさせない文章(369)だが、
> TCPは既に実装されていて、バグフリーでタダで使える。
これも問題だな。
0375デフォルトの名無しさん
NGNG374の使ってるOSでは既存のTCPプロトコルスタックに(既知の)バグがあったり、
既存のがなくて自前で工数かけて実装する必要があったりするわけ?
0376デフォルトの名無しさん
NGNGわけもわからずバグフリーってのはどうかと。
いやバグは無いだろうねバグは。
ただこういうこと言うやつって
自分自身がバグだったりする例が多いんだよね。
UDPにはないTCPの特性や状態遷移図くらいはわかっているとか
ならいいけどね。それもわからずに闇雲にTCPはバグフリーというのは
どうかな?とは思う。
そうは言っても、素人はTCP使えば?ってのはあたっているが。
0377デフォルトの名無しさん
NGNGで、何が言いたい?
0378デフォルトの名無しさん
NGNG376ではないが
分からないのか?
0379デフォルトの名無しさん
NGNGわからないな
説明してくれ
0380デフォルトの名無しさん
NGNG0381376
NGNGということだよ。
0382デフォルトの名無しさん
NGNG意味がわからない
全てのプロトコルやレイヤーを熟知していないとネットワークプログラミングを
するなという事か?
0383376
NGNGいや、知らないでもできるよ。
だから素人はTCP使えって言ってる。
ただトラブルがあったときに対処不能だろ。
素人や学生のプログラムならそれでもいいが
実際に金をもらってコード書いている立場だと、
「対処できません」っていえないけどな。
0384デフォルトの名無しさん
NGNG詭弁の一法: 意味拡大
0385デフォルトの名無しさん
NGNGで、あなたは対処できるんですか?
>>384
どこが?
0386デフォルトの名無しさん
NGNGなんか今繋がらない。
確か、IOCPを使って2-3万とかだったような気がする。
で、BSD socketでも(実装に依るだろうけど)Winsockとそう極端には変わらないんじゃないかと。
違っても1/3とか3倍とかその程度じゃないかと。
それより、マルチプロセスやマルチスレッドだと
そっちのリソースの制限の方がきつそうだから
必然的にselectを使うことになって
この規模だとselectの非効率性も問題になるような。
で、互換性のない拡張に頼ることに。
0387デフォルトの名無しさん
NGNG枯れている TCP を使った方がなんぼか信頼性の高いものがでない」という
意味で言ったことは明らかだろ。ただしこの場合、「バグフリー」という言葉は
不適切だが。
で、376 は「TCP のバグ」っていうのが気にいらなかったんだろ。「TCP のバグだ」
なんて言うやつは、大抵自分が勘違いしていることがほとんどだ、と
376 の言うことはそれはそれで正しい。でも、全然話の流れと関係ない。
このスレで「TCP にバグがある」なんて誰も言ってないじゃん。
0388デフォルトの名無しさん
NGNGまたこのネタやってんのかw
アホかお前らww
0390いややね、なりすまし ◆ztMasRA.j2
NGNG"みんな、考えてくれてる"
ってのがひしひしと伝わってくる。
思い込みかも知れんけど、うれしい。
最初は、全く相手にされへんかったけど。
(ま〜、説明が下手だったからかなぁ〜)
途中(>>369-389)、難しいそうな話が話があったけど、
半分も分からんかったかな。
分かった範囲でめっちゃ簡単にまとめると、
TCP…初心者向け。なんでかって言うと、いろんなことを
プロトコル(下位階層?)がやってくれるから。
いろんなことって言うのは、送ったデータ(パケット?)が
相手にちゃんと届いてるとか、とか、とか。
⇒初心者向けっていうか、作りやすい、って感じかな?
UDP…玄人向け。なんでかって言うと、いろんなことを
プロトコル(下位階層?)がやってくれないから。
だから、独自プロトコル(順序保証機能や再送機能)みたいなの
を考えなくちゃいけないから。
⇒結局、独自プロトコル(順序保証機能や再送機能)をすると、
UDPの"軽い"っていう長所がなくなってしまうと思うけど。
って感じなんかな?
続く...。
0391デフォルトの名無しさん
NGNG必要ならTCP使えばいいってだけのことだろ。
特に新しい物を作らないのであれば。
0392デフォルトの名無しさん
NGNG1.上位のプロトコル自身が要求&応答というシーケンスになっている。
(UDPの到達確認や順序保障が無くても関係なし)
例:DNS, DHCPなど
2.どうせ繰り返し送るので、抜けたって泣かない。
例:RIP, NBT
3.ブロードキャストが普通だったりする。
例:RIP, NBT
4.抜けたからって再送されてももう遅い。
例:リアルタイムストリームのビデオや音声(RTP? 自信なさげ)
くらいかな?だれか補足して。
0393デフォルトの名無しさん
NGNG0394いややね、なりすまし ◆ztMasRA.j2
NGNGこれって、わざわざ探してきてくれたん?
そんなわけないか...。でも、参考になった。
ありがとう。
で、読んだのですが、も〜、何がなんだか...。
CaseByCaseで
UDPorTCP&サーバorクライアントがポート開く
を組み合わせて使う。
って感じなんかな?
あかんわ、全然、解決しとらん。
そもそも、最初は、
『なんで、クライアント側が口あけとかんと駄目なん?』
だった。で、この時点では、クライアントがTCPorUDPの
どっちの口かは問題にしてなかった。
で、クライアントのあける口がUDPであれば、
サーバ側もUDPの口あけてやって通信する。
こうすれば、サーバ側で沢山の接続を維持しなくても
よくなる。(TCPであれば、維持し続けなくてはいけないから。)
って、おもった。
続く...。
0395デフォルトの名無しさん
NGNGしばらく書き込み止めて勉強してくれ。まじで。
0396デフォルトの名無しさん
NGNGなんとゆーか、勉強熱心なのは感心なのだが、、、
君の問い掛けはネットワークの基礎知識であって、
ネットワークプログラミングとは関係無いと思うのだが。。。
0397いややね、なりすまし ◆ztMasRA.j2
NGNGこれが問題なん。
サーバが維持する接続をなくしたい
↓
クライアントが接続を維持する必要のないUDPの口を開ける
が、俺の書いた絵なんやけど、>>376で
この絵は駄目になったん。
サーバが口を開けて待ってるところへ、
クライアントが接続して、その接続を
サーバが維持(保持?)する。
ってのと、
クライアントが口を開けて待ってるとことへ、
サーバが接続して、その接続を
サーバが維持(保持?)する。
ってのは、サーバ負荷(維持(保持?)及び監視する)ということでは、
同じなのではと思ってまう。
多分、この部分がおかしい、ってか分かって
ないんやと思うんやけど、そやろ?
0398デフォルトの名無しさん
NGNGその答えはかなり前に答えが書かれてる。
人の話を聞く気が無いなら質問するな。
0399デフォルトの名無しさん
NGNG待ち受ける方は糸の繋がった紙コップを持って待ち構えてなきゃいけない。
繋ぐ方は自分の紙コップから延びた糸をそこに繋ぐイメージ。
サーバがポートを開けて待つのだったら、サーバは物凄く大量の紙コップを
持ってなきゃいけない。
一方、クライアントがポートを開けて待っていれば、サーバは紙コップを
1個だけ持ってて、必要な時に必要な相手の糸に繋ぐだけ。やりとりが
終わったら糸を切ればいい。
0400いややね、なりすまし ◆ztMasRA.j2
NGNGいわれたら、ヘコムやろ。絶対、ヘコムわ。
あ〜、悲しいなぁ〜。そんな言い方は悲しい。マジで。
>>396そやろ、僕、勉強熱心やねん。だから、教えて欲しいの。
厨房でもなんでもいいから、知りたいねん。
センセ、教えてください。m(_ _)m
0401デフォルトの名無しさん
NGNGお前、頭悪すぎだ。どうしようもないクズだ。
0402396
NGNGネットワーク“プログラミング”の話題ができるようになったら来い。
あとなぁ、公共の場で方言使うな。同じ関西人としてめっちゃウザい。
関西人がみんなお前みたいな奴やと思われたら迷惑じゃ。
0403デフォルトの名無しさん
NGNGここまでのやりとり見ると馬鹿のほうだが
0404デフォルトの名無しさん
NGNG勉強熱心じゃない人間にはそれが理解できないという、
まあよくあるメタ認知の問題だね。
0405いややね、なりすまし ◆ztMasRA.j2
NGNG>>368,386
のやり取りのことやね。ホント、すんません。
で、それを分かりやすく説明してくだれたのが、
>>399ですね。
ホント、すんません。
ということで、疑問は全て解決しました。
はぁ〜、ホント、みなさん、すんませんでした。
で、ホント、ありがとう。
>>401そやね。そう思われても、しゃーないね。
>>368,386を見逃してる時点でアホ確定ですわ。
>>402『聞く耳もたん厨房』かぁ〜。
そやね、それもしゃーないね。
やっぱり、>>368,386を見逃して、>>397の質問する時点で
アホ確定ですね。
あと、心配せんといて。俺、関西人やないから。
>>403どう、ちょっとは、天才の方に傾いたやろか?
>>404またまた、厳しいなご指摘やな〜。お〜コワッ。
俺みたいな厨房の分かりにくい文章を読んで、考えて、意見してくれて
叩いてくれて、ホント、みなさん、ありがとう。
相手してもらってうれしかったわぁ〜。
ほな、まいどさ〜ん。
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNG電波さんも一味違うな
0409デフォルトの名無しさん
NGNG2chらしいな
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNGあ、やべ。初めてウザさを感じた。
関西人じゃないってとこに。
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNGうわ〜、[いややね、なりすまし ◆ztMasRA.j2]のこと、
まだ引きづってるやつがいるよ。
サムッ!!
コワッ!!
ここは、そんなこと書き込むところじゃないよ?
大丈夫?
特に君、>>409君のことだよ。
そんなこと言ってあんたが、一番盛り上がってますから〜
残念、電波より無知なのはあんたですから〜 切り!!
m9(^Д^)プギャーーーッ
0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNG今一般的に使われてるDSLなどの環境でTCP接続をした場合
その通信速度は、AGPなどPCのバス速度の何分の一くらいまで下がっちゃうんでしょうか?
というのも、VNCのようなソフトの場合、15fpsも出ませんよね?
純粋に画像データだけだと、何fpsくらいでるのかな?
0421デフォルトの名無しさん
NGNG詳しく
0422デフォルトの名無しさん
NGNG具体的に書きますと
とあるグラフィックソフトを開発してまして…
複数のリモートComputerで分散処理して、そのレンダリング結果を出力するようなのを作りたいのです。
ただ、出来るだけリアルタイムで処理したいので、仮想グラフィックドライバを作りグラフィックボードと同じ感覚で扱えるようにしたいのです。
その時に、帰ってくるデータの転送速度はAGPと比べてどの程度ボトルネックが発生してしまうのかな? と
0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNG今一般的に利用されてるAGP 4Xが1066MB/s(上下対称)
一般で利用されてるADSL回線8Mが実質3MB/sほど…(上下非対称)
…無理。
0425デフォルトの名無しさん
NGNG1280x1024x24bit色の非圧縮のBMPを作成すると
3.75 MB (3,932,214 バイト)
こんな感じ。
つまり、4MB/sの能力を持つ回線がベストの結果を返し続けたとしても
1秒間に1回しか画面の書き換えが出来ない。
実際には計算データをリモートコンピュータに転送しなければならないので、そちらに帯域を引きずられるからもっと酷い。
0426デフォルトの名無しさん
NGNGzlib圧縮をかけるともっと圧縮できるがね。
まぁ、現状のVNCを見ればどのような状況になるかはわかると思う。
0427デフォルトの名無しさん
NGNGというかリアルタイムのレンダリングをPCのCPUでするのもそもそもおかしい。
分散環境がベクトル機とかなら可能かもしれんが。
まぁ、LANでも無理でしょう。
0428デフォルトの名無しさん
NGNGレンダリングした画像は圧縮していいんだろ?
だったらライブカメラでいいんだよ!!
実績がいくらでもあるじゃねーか。
mmorpgもこの方式でやってたとこあるしな。
0429デフォルトの名無しさん
NGNG> ただ、出来るだけリアルタイムで処理したいので、
> 仮想グラフィックドライバを作りグラフィックボードと同じ感覚で扱えるようにしたいのです。
描画形の独自プロトコロの方がいいと思ふ。
0430デフォルトの名無しさん
NGNG認証(電子署名)って意味無くないですか?
「平文」と、平文を秘密鍵で暗号化した「暗号文」を送信して、
さらに「公開鍵」を送信して
で、相手側は、暗号文を送られてきた公開鍵で複号して、その復号文と
平文を照合して正当性を確認するみたいですが、「平文」が改竄されただけ
なら確かに改竄に気付きますが、「平文」「暗号文」「公開鍵」の3つともが
改竄されてしまったら何の意味もないように思えるのですが・・・
例えば、平文を「偽の文」に改竄し、暗号文をその偽の文を偽公開鍵で
暗号化したものに改竄し、公開鍵をその偽公開鍵に改竄してしまえば
何も見破られる事なく改竄できるように思えるのですが・・・
勘違いしてる点があったら教えてください。
0431デフォルトの名無しさん
NGNG認証(電子署名)って意味無くないですか?
「平文」と、その平文を秘密鍵で暗号化した「暗号文」を送信して、
さらに「公開鍵」を送信して
で、相手側は、暗号文を送られてきた公開鍵で複号して、その復号文と
平文を照合して正当性を確認するみたいですが、「平文」が改竄されただけ
なら確かに改竄に気付きますが、「平文」「暗号文」「公開鍵」の3つともが
改竄されてしまったら何の意味もないように思えるのですが・・・
例えば、平文を「偽の文」に改竄し、暗号文をその偽の文を偽秘密鍵で
暗号化したものに改竄し、公開鍵をその偽秘密鍵と対の偽公開鍵に
改竄してしまえば 何も見破られる事なく改竄できるように思えるのですが・・・
勘違いしてる点があったら教えてください。
0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNGセキュリティ
http://pc5.2ch.net/sec/
に行け。認証と秘匿と鍵配布を区別しながら考えろ。
0436デフォルトの名無しさん
NGNGそれに対処するために公開鍵を権威ある認定サイト(例えばverisign)によって署名しとく。
0437デフォルトの名無しさん
NGNG本物の公開鍵を登録しておく場所があって、
ttp://pgp.nic.ad.jp/pgp/pks-commands-j.html
そこにあるものと、照合して一致して、かつ、
えらい人が信用している鍵は信用できる、
ということになってる。
0438 ◆eomKYEndr6
NGNG0439デフォルトの名無しさん
NGNG認証(電子署名)って意味無くないですか?
「平文」と、その平文を秘密鍵で暗号化した「暗号文」を送信して、
さらに「公開鍵」を送信して
で、相手側は、暗号文を送られてきた公開鍵で複号して、その復号文と
平文を照合して正当性を確認するみたいですが、「平文」が改竄されただけ
なら確かに改竄に気付きますが、「平文」「暗号文」「公開鍵」の3つともが
改竄されてしまったら何の意味もないように思えるのですが・・・
例えば、平文を「偽の文」に改竄し、暗号文をその偽の文を偽秘密鍵で
暗号化したものに改竄し、公開鍵をその偽秘密鍵と対の偽公開鍵に
改竄してしまえば 何も見破られる事なく改竄できるように思えるのですが・・・
勘違いしてる点があったら教えてください。
0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNG=======板違い=======
0442デフォルトの名無しさん
NGNG板違いのコピペに答えてんじゃねーよ、この能無しプログラマが
0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNG釣りか ? 激しくウザイんだけどな。
まあ、一応マジレスしとく。
> で、相手側は、暗号文を送られてきた公開鍵で複号して、その復号文と
> 平文を照合して正当性を確認するみたいですが、
そもそも、改竄防止なら平文と MD5 とかのハッシュ値を送っておけばいい。
(受け側で MD5 計算して合ってれば改竄はないと思われる。)
> 例えば、平文を「偽の文」に改竄し、暗号文をその偽の文を偽秘密鍵で
> 暗号化したものに改竄し、公開鍵をその偽秘密鍵と対の偽公開鍵に
> 改竄してしまえば 何も見破られる事なく改竄できるように思えるのですが・・・
当たり前だ。
だから、公開鍵をどこから入手するかが問題となる。
ビジネスで使うなら VeriSign とかの認証局を使うのが普通だろうし、個人なら自分のホームページで直接公開するとかして公開鍵自体の改竄は防止しないと意味がない。
0445デフォルトの名無しさん
NGNG釣りか?激しく死ね。
0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNGまぁまぁ、冬休みですから。
0450デフォルトの名無しさん
NGNGレスの一の位の数字で占う。
1:1部上場企業に就職内定 2:かわいい彼女ゲッツ!
3:ロト6の3等以上が当選 4:両親とも来年も健康
5:弟が第一志望の大学合格! 6:ダイエット成功!5キロ痩せれる!
7:来年(度)首席で卒業だぜ! 8:RX8が欲しい!来年こそ買える!
9:就職失敗。ヤクザの世界へ 0:登校中の駅のホームで誰かに線路に突き落とされ、ひき殺される。
0451デフォルトの名無しさん
NGNGご愁傷様・・・。
気をつけろよ。
0452まあ、無理だろうけどな。
NGNGあらあら、また言うだけ厨房のお出ましか...。
今年は、こういうやつが一人でも少なくなることを祈るよ。
0453デフォルトの名無しさん
NGNG人間関係で苦労してそうだね。ご愁傷さま。
0454デフォルトの名無しさん
NGNGまあ、「外してる」とか「空気読めない」とかしか書けないんだったら、出てこなきゃいいのにね。
> 人間関係で苦労してそうだね。ご愁傷さま。
うん、君にはそういう苦労はないだろうね。
君の周りの人は知らんけどさ。(藁
0455デフォルトの名無しさん
NGNG>>431-432で、質問があった。
連投でうざいものの、>>432-437でちゃんとしたレスがある。
それを読まなかったのか、ただコピペしたのか、
再び>>439に同じ文章が書き込まれた。
今度は誰も相手にしなかった。>>440もコピペだ。
だが、唯一人、そんな状況を無視して
偉そうに、既に書き込まれているのと大差ない内容を書き込んだ奴が居る。
「マルチやコピペに回答するバカ」を笑っているだけさ。
0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNGコピペにわざわざ回答するのも間抜けではあるが、
それを突っ込む奴も、スレ汚しになるような煽りレス返さなくても良い。
「コピペにマジレス」位のわかりやすい方法でレスするのがベストだ。
0458デフォルトの名無しさん
NGNG新年早々熱いね。(藁
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNG0463デフォルトの名無しさん
NGNGサーバーへのログインは簡単にできたのですが、LISTコマンドによるファイル一覧取得ができません。
ためしにtelnetで以下のように打ち込んでいくと…
> open サーバー名 21
< 220 以下略
> USER ユーザ名
< 331 Password required for ユーザ名.
> PASS パスワード
< 230 User ユーザ名 logged in.
> TYPE A
< 200 Type set to A.
> PASV
< 227 Entering Passive Mode
> LIST /
ここで何も表示されません。
FTPサーバーはProFTPDで、LISTコマンドには対応しています。
どういった問題が考えられますでしょうか?
0464デフォルトの名無しさん
NGNGftpコマンドのデバッグオプションを使ってみろ。
0465デフォルトの名無しさん
NGNGEPSV
EPSV ALL
じゃ、だめ?
0466デフォルトの名無しさん
NGNG> PORT 192,168,**,*,****,*
< 200 PORT command successful.
> NLST
とやってみたけど、やはりここで応答がなくなります。
0467デフォルトの名無しさん
NGNG< 500 not understood.
といわれました。
0468デフォルトの名無しさん
NGNGもうひとつ端末を開いて、新しくできたソケットにtelnetでアクセスして。
それを読み取ったらOK
0469デフォルトの名無しさん
NGNG>>> telnet ftp.netbsd.org 21
Trying 2001:4f8:4:7:2e0:81ff:fe21:6563...
Connected to ftp.netbsd.org.
Escape character is '^]'.
220 ftp.NetBSD.org FTP server (NetBSD-ftpd 20040809) ready.
USER ftp ←打ち込み
331 Guest login ok, type your name as password.
PASS ←適当なメールアドレスまたは空白。
230-
The NetBSD Project FTP Server located in Redwood City, CA, USA
(略)
EPSV ←打ち込み
229 Entering Extended Passive Mode (|||62061|) ←この数字
ってなったら、telnet ftp.netbsd.org 62061とする。
でLISTコマンド。
PASVを使うときは
PASV
227 Entering Passive Mode (204,152,190,13,236,3)
ってなったら、前の4つがIP番号、後ろの二つがポート番号。
ポート番号は236 x 256 + 3 = 60419のように算出する。
で、telnet 204.152.190.13 60419でLISTの内容を読み取る。
0470デフォルトの名無しさん
NGNG今までPASVモードの意味がわからず適当にやってましたが、なんとなく意味がわかりました。
もう一個ソケットを作ってそちらで受信するという感じですかね。
0471デフォルトの名無しさん
NGNGいえ、FTPは常に別ソケットでデータを転送しますが、伝統的にはクライアント側が
ポートを開き、サーバー側からそのポートに接続してました。 しかしこれはファイアーウォール、
およびNATと相性が悪いのでPASV(受動)モードが作られ、このモードでは2つ目のポートを
サーバー側が開き、クライアント側からそこに接続してデータを受け取るようになったのです。
0472デフォルトの名無しさん
NGNGプロトコル毎に無理やり変化をつけて嫌がらせしてるとしか思えん。
0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNGするため。
0475デフォルトの名無しさん
NGNG何をごにょごにょできるの?
0476デフォルトの名無しさん
NGNGだから、同時に接続出来るコネクション数で縛ろうとする。
しかし、これをすると、接続したユーザーはダウンロード中に別のファイルをダウンロードしたり、ディレクトリを移動出来なくなる。
それを防ぐ為?
0477デフォルトの名無しさん
NGNGディレクトリを自由に移動できたりする。これは制御用ポートを別に持っているため。
0478デフォルトの名無しさん
NGNGny使っててルータに穴が開けれないときとかに、
「Port0設定」ってするでしょ。
で、それはいいんだけど、ルータに穴が開けれない状態で、
「Port0設定」しなかったら、警告がでるじゃない。
あれって、どうやってnyは分かってるの?
何をもって、「このPCは外部から接続を許していませんよ」って
判断してるの?
ね〜、どうやって?
0479デフォルトの名無しさん
NGNGここはネットワークの仕組みじゃなくネットワークプログラミングのスレなんで
自分で作らない人はダウソ板で訊いてよね。
0480デフォルトの名無しさん
NGNG知的障害者にレスしてんじゃんえよ
http://pc5.2ch.net/test/read.cgi/prog/1104851304/l50
0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNG割れてる奴には教えない、でFA?
0483デフォルトの名無しさん
NGNGそこで割れ推奨ソフトの話題出されたら、どうなるかわかるだろ?
0484デフォルトの名無しさん
NGNG0485こうなる
NGNG0486デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNGTCPはコネクション維持してる間、接続先に絶えずパケットを投げてると聞いたのですが
それなら、ルーターのセッションが切れることは無いと思うんですが、ルーターにはセッション維持時間ってありますよね?
あれは、同じIPアドレスへのパケット送信は一定時間を過ぎると出来なくする仕組みなんですか?
それなら、データのsend()でデータを送った場合も途中で切れることになってしまうと思うんですが・・・・
0488デフォルトの名無しさん
NGNG> TCPはコネクション維持してる間、接続先に絶えずパケットを投げてると聞いたのですが
それデマ。
0489デフォルトの名無しさん
NGNGデマというより、SO_KEEPALIVE の話に尾ひれがついただけのような気が。
SO_KEEPALIVE をつけると定期的にパケットを投げてTCPコネクションの
確認を行う、という機能は確かにある。
しかし「絶えず」とは言いがたい。デフォルトで2時間間隔。
ttp://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#peer_death
つまり通常あまり使われるものではないし、少なくとも >>487 の話においては無関係。
なので、>>487 の心配は杞憂。
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNGうちの鯖製品はクライアントと長期に渡ってSSL接続をするのだがデータは10分に一回ぐらいしか
流れないのでNAT接続を切られないためにtcp keepaliveを1分ぐらいに設定している。
0494デフォルトの名無しさん
NGNG> WinSock2.0プログラミング
> http://www.amazon.co.jp/exec/obidos/ASIN/4797306882/
これって、在庫切れだったみたいだけど、
WinSock2プログラミング 改訂第2版―Windows Sockets APIによるネットワークプログラミングのすべて
http://www.amazon.co.jp/exec/obidos/ASIN/4797330449/
が店頭に出ていたよ。
0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNGunix2dosで変換汁
0498デフォルトの名無しさん
NGNG何か弊害があるんじゃないかと心配になる。
0499デフォルトの名無しさん
NGNGワードパッドやEclipseで開くけば大丈夫。
0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNG0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNGこの本では getaddrinfo に渡す第3引数 addrinfo のメンバ ai_family に AF_UNSPEC を代入しているのですが
コンパイルが通らないし man では PF_UNSPEC と書いてあるのですがこれは間違いですか?
何か歴史的な理由があるのですか?教えてください
0505デフォルトの名無しさん
NGNG元々protocol familyとaddress familyは
区別する必然性があるかどうか分からない利用が多かった。
今も混同しているケースが多い。
getaddrinfo(3)ではサービスも指定して引くこと、
TCP/IPの階層構造とIPv4/IPv6の関係から、
この混乱に拍車がかかった感がある。
http://www.opengroup.org/onlinepubs/009695399/functions/getaddrinfo.html
http://www.faqs.org/rfcs/rfc3493.html
0506デフォルトの名無しさん
NGNGここの間違いリスト20.の以下の記述、
>ブロック型ソケット、非ブロック型ソケットのどちらを使っているかに関わらず、
>send() または recv() の成功時に、その返却値と期待している値を比較するべきです。
を読んで以来、ブロッキングモードの場合でも、戻り値を見て、指定分より少なければ
再送信というコードを組んでいたが、.NETのSocket.Sendメソッドのドキュメントを読むと、
>コネクション指向のプロトコルを使用している場合、 Send は、バッファ内のすべてのバイトが
>送信されるまでブロックします。非ブロッキングモードでは、 Send が送信したバイト数が
>バッファ内のバイト数より小さくても、このメソッドは正常に完了します。
と書いてあった。試しに20MBのデータをブロッキングモードで一気に送ってみたら、時間は
掛かったが確かに20MBしっかり送信して戻り値が返ってきた。
気になってWinsock2のsendのドキュメントを読んでみると、
>If no buffer space is available within the transport system to hold the data
> to be transmitted, send will block unless the socket has been placed in
>nonblocking mode. On nonblocking stream oriented sockets, the number of
>bytes written can be between 1 and the requested length,
と書いてあり、バッファサイズがないときはブロックすると書いてはあるが、全てのバイトが
送信されるまでブロックされるか否かまでは言及していない。
.NETになってから仕様が変わったと考えていいのだろうか。
0507デフォルトの名無しさん
NGNG明記されない限り後のバージョンでもそのままとは限らない。
0508デフォルトの名無しさん
NGNGただ日本語版を根拠にすると後で困ることが往々にしてあるので
英語版の記述を確認しておく方がいいんじゃないだろうか。
0509デフォルトの名無しさん
NGNG書かれていました。
>If you are using a connection-oriented protocol,
> Send will block until all of the bytes in the buffer are sent.
> In nonblocking mode, Send may complete successfully even if
> it sends less than the number of bytes in the buffer.
上記のような記述がありました。今少々余裕があるのでもう少し調べてみようと思います。
0510デフォルトの名無しさん
NGNGJavaのjava.io.OutputStreamみたいに、戻り値がvoidなら
自然な挙動だよね。もし、その仕様なくせにintを返してたら、
BSDソケットとの中途半端な違いで激しく紛らわしいと思う。
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNG繰り返し呼び出してるだけだろ。
0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNGあと、クライアント A から サーバー B から サーバー C への転送とかも指示できるようにするためでもある。
0515デフォルトの名無しさん
NGNGWindows2000では、ブロッキングソケットは送信完了までブロックする。
ただし、送信バッファが足りない場合、即時に-1を返す。
その場合GetLastErrorは0を返す。
一回のsend呼び出しで失敗しないサイズの上限は、
メインメモリの半分程度。
0516デフォルトの名無しさん
NGNGそれって変な仕様だよなぁ。
send()って、バッファ分全部送らなくていいはずだから、
一回送れるだけ送って、そのサイズを返せばいいのに。
既存のお行儀のいいコードは、それを必要分繰り返す
作りになってるだろうし。初心者はFAQ嫁、と。
0517デフォルトの名無しさん
NGNGBSD socket的に?
なんか言いがかりっぽい気が・・・
0518デフォルトの名無しさん
NGNG仕様じゃなく、振る舞いね。
-1返しといてGetLastErrorが0返すのは変。
ブロッキングソケットに対するsendが全データを送信するのは普通。
ただ、仕様にそう明記されてるわけじゃないから、問題がややこしくなってる。
0519not 516
NGNGバッファが足りない&どうしても送りたい時は、
小さくして再送するしかないわけだから、
遅れるだけ送ってくれてもいいような気がするわな。
それだと困るのは「バッファが足りないなら送って欲しくない時」って
ちょっと変った時だけだし。ただ、
> 一回のsend呼び出しで失敗しないサイズの上限は、
> メインメモリの半分程度。
これが確実ならどうでもいいと思うけど、仕様に書いてあるのかな?
仕様じゃないなら、再送ロジックを組まなきゃいけないのはBSDソケットと同じ。
けど、カーネル呼び出しを一回損している。
0520not 516
NGNG> ただ、仕様にそう明記されてるわけじゃないから、問題がややこしくなってる。
明記されてないのか。じゃあ再送ロジック書く必要があって、
BSDソケットとは別のやり方なんだ。
俺はBSDソケットの仕様の方が素直だと思う。
送信バッファが足りないって理由じゃあきらめない、
のであれば、それはそれで一つの見識(やり方)だと思うけど。
0521506
NGNG言語 C#(.NET Framework 1.1)
マシン セレロン1GHz、メモリ128M
仕様
クライアント 指定されたバイト数を一気に送信(一回のsend)して終了。
サーバー ひたすらrecv()する。データは読み捨て。
以上の条件で実験したところ、63メガバイトまでなら一気に送信できましたが、
64メガバイトになったらエラーが起こりました。ちょうど搭載メモリの半分です。
エラーの詳細
例外SocketExceptionの発生。
SocketException.ErrorCodeは、10055でした。
MSDNの、
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/windows_sockets_error_codes_2.asp
で、エラーコード10055を調べたところ、WSAENOBUFSというエラーでした。
0522506
NGNG0523デフォルトの名無しさん
NGNG> これが確実ならどうでもいいと思うけど、仕様に書いてあるのかな?
振る舞いでつ
>>520
WinSockはBSDのコードをベースにしてるから、
BSD Socketと同じ振る舞いをする前提で書くのが普通。
0524デフォルトの名無しさん
NGNGBSD SocketのAPI的にはバッファの存在は仮定してない気がするんですが...
> BSD Socketと同じ振る舞いをする
振る舞いって誰が決めてるんですか?
0526516
NGNGUndocumentedなら、振る舞いだね。
Winsockは詳しくないのでどうでもいいです。
send()がバッファ分全部送るまで復帰しないとなると、
送信キューと専用スレッドみたいなのは作れなくない?
送信データ作成 -> 送信スレッドにエンキュー
送信データ受信 -> 送信可能ソケットなら送信
みたいな感じで、送信スレッドを共有する奴。
こんな作りのアプリがあるのかは知らないけどな。
0527デフォルトの名無しさん
NGNGスレッド間で共有できる領域を作る。
送信スレッドはsendする前に自前でバッファ持っといて共有領域からコピー、その後sendする。
0528デフォルトの名無しさん
NGNG0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGBSD SocketなんだからおとなしくBSDの流儀に従うのが筋。
0531デフォルトの名無しさん
NGNG> -1返しといてGetLastErrorが0返すのは変。
GetLastError ではなく WSAGetLastError を使え、とかそういう話じゃなくて?
>>515
> 一回のsend呼び出しで失敗しないサイズの上限は、
> メインメモリの半分程度。
それは、たまたま手元の実験結果ではそうだった、という以上の意味は何も無
いと思うけど。もっとさまざまな外部要因が関係しそうだし、勝手に一般化す
るのは危険だよ。たとえば window size とか他のソケットやカーネルのメモ
リ利用状況とかにも影響するんじゃない?
↓直接は関係ないと思うけどこんな要因もあるよ、という話で
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/advanced.html#maxsockets
0532デフォルトの名無しさん
NGNGせいぜい4〜5件程度で、selectするのが面倒なんで各クライアントのSocket
クラスのPollをそれぞれ呼び出してるんですけど行儀悪いんですかね?
0533デフォルトの名無しさん
NGNG全く全然これっぽっちも問題ない
0534デフォルトの名無しさん
NGNGSystemV系のUnixだったか?
0535デフォルトの名無しさん
NGNGnon-blocking socket使う。
0536デフォルトの名無しさん
NGNG> それは、たまたま手元の実験結果ではそうだった、という以上の意味は何も無
> いと思うけど。
重要なのはそこじゃない。
もしそれが仕様だとしても、思い通りの振る舞いは期待できない。
OSのメモリ割り当て処理をロックできるんなら話は別だけど。
重要なのは、ブロッキングソケットのsendがデータを送信してないのに
戻ってくることがあるってこと。
0537デフォルトの名無しさん
NGNGSO_SNDBUF で 0 指定しとくのが良さそうですね・・・
0538デフォルトの名無しさん
NGNG同一スペックのマシンでLinux+GCC, Java, Win32+C++, .NET+C#でベンチ取った結果ってないのかな。
0539526
NGNGんにゃ。
送信待ち行列中にあるソケットを送信側の状態でポーリングして、
送信可能になったデータを適宜送信するスレッドなんで、ひとつでも
送信がブロックされると困るって状態さ。
全部送りきれなかったら再度キューに突っ込んで、送信可能状態に
なるまで待つって感じで。
そっか。他の多重化手法を使えってことか。。
0540デフォルトの名無しさん
NGNG何だっていいと思うけど、.NETのSelect()、簡単じゃない?
0541デフォルトの名無しさん
NGNGそれはpoll違い。
>>532の言うPoll()は、(大文字です)
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemnetsocketssocketclasspolltopic.asp
Select()は、
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemnetsocketssocketclassselecttopic.asp
0542デフォルトの名無しさん
NGNG以後、そのソケットは機能しなくなる
win2KのバグですがXPでも発生します?
そもそもUDPで10054自体納得できないですが・・・
ググって見るとオプションで回避できるという事ですが
具体的な方法を探せません、どなたか教えていただけないでしょうか?
0543デフォルトの名無しさん
NGNG10054エラー自体は発生を確認してます。その後つかえなくなる、ってことは経験していない、
というか少なくともエラー発生後も同じソケットで他のアドレスへは送れていました。
回避方法は
_socket.IOControl( SIO_UDP_CONNRESET, new byte [] { 0 }, new byte [] {} ); // C#ね
てな感じ。これによる不都合も特に無いようです。
0544デフォルトの名無しさん
NGNGありがとうございました
正常にタイムアウトがでるようになりました
実装する以前はタイムアウトまでいかずにかたまっていました
0545デフォルトの名無しさん
NGNG同じPCでUDPクライアントを2個動かし
サーバの同じポートへ接続して送受信した場合
問題はあるのでしょうか?
同じポートへ接続しても良いものなんですか?
0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNG0548546
NGNGソケット作るときポートを指定していないので。
ありがとうございます。
問題がないなら、それで作ろうと思います。
0549デフォルトの名無しさん
NGNGTCP/UDPのパケットの行き先(ソッケト)は、
両側のIPアドレスとポート番号の四つ組で識別される。
行き先のIPアドレスとポート番号だけ(二つ組)じゃない。
これTCP/IPの常識。
0550デフォルトの名無しさん
NGNGパシャッ
∧_∧ パシャッ ソッケト
パシャッ ( )】Σ
. / /┘ パシャッ
ノ ̄ゝ
0551デフォルトの名無しさん
NGNGまあ両方向の「ソッケト」を考えるとそう言えないこともないけど。
0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNGちゃんと具体的に何が間違ってるのか指摘しようよ。
漏れには全くわからないけどな(w
0554デフォルトの名無しさん
NGNGコネクションがないから、
「コネクションの識別を四つ組でする」と言うことに意味がない。
ディストネーションだけで運ぶ先が分かる。
データグラム通信というのはそういうもの。
TCPの場合は、四つ組で接続を識別するので、
片側だけ注目すれば、同じIPアドレス、ポート番号の組みを持っていても、
別の接続と言うことがある。接続が別であるという事は、
その端点であるソケットも当然別のものになる。
これはUDPには通用しない。
FirewallではUDPでも両方を見ているので、(例えばdomainは通すなど)
この点勘違いしている人がたまにいる。
0555545
NGNGとなると、UDPで私が言ったことは出来るけど好ましくない。
と言うことですよね?
もう作ちゃった…
どう運用するか考えます。
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNGサーバ側 一対多 クライアントs側
の時に、サーバ側は、四つ組を想定すれば、相手を識別できる。
通常、何も考えずに、ソースIPアドレス/ソースポート番号に返すだけで住む場合が多い。
BSDソケットでは、accept/connectをUDPに使えば、
接続があるかのようにプログラミングすることができる。
0558デフォルトの名無しさん
NGNGなんで? UDP でも四つ組の識別ができるじゃん。
0559デフォルトの名無しさん
NGNG1データグラムについては「4つ組」があるけど、ソケットについては自分の側のアドレス:ポート番号の2つだけ。
1つのソケットでどこのremote end point へも送信できるし、どこからのデータグラムでも受信するよ。
0560デフォルトの名無しさん
NGNGTCPを四つ組で識別する必要があるのは、
ネットワーク層からトランスポート層に受け渡す時だよ。
UDPではこれは必要がない。
あなたがアプリで四つ組を意識するのは勝手。
0561デフォルトの名無しさん
NGNGそりゃそうだけど、
>>554
> コネクションがないから、
> 「コネクションの識別を四つ組でする」と言うことに意味がない。
ってのは違わないか? コネクションはなくても source/dst それぞれの
ipaddr・port 識別はできるわけだし。
0562デフォルトの名無しさん
NGNG「コネクションの識別をする意味がない」の「コネクション」はトランスポート層の話で、
561さんが話してる「識別」はアプリケーション層の話でしょう。
んでそもそもの発端の>>549
>TCP/UDPのパケットの行き先(ソッケト)は、
>両側のIPアドレスとポート番号の四つ組で識別される。
>行き先のIPアドレスとポート番号だけ(二つ組)じゃない。
はUDPの場合明らかな間違い。
UDPの場合行き先のIPアドレスとポート番号だけで、
先方のどのソケットに到着するかが決定される(bindしてる奴がいれば)。
0563デフォルトの名無しさん
NGNG全然OKです。 例えばDNSの名前引きなんかUDPでしょう? 同一ホスト上の
複数のアプリが同じDNS鯖にDNSの問いかけ投げてるじゃないですか。 鯖内では
ある問い合わせがどこから来たのかを覚えておいてそこに投げ返しているのです。
0564デフォルトの名無しさん
NGNGなんかWSA〜使えとか参考書に書いてあるんですが
つーかselect第一引数はダミーってなんだよ
Winsockヤバイ
0565デフォルトの名無しさん
NGNG> UDPの場合行き先のIPアドレスとポート番号だけで、
> 先方のどのソケットに到着するかが決定される(bindしてる奴がいれば)。
>>557の言うようにUDPでもaccept/connectをすればそうとは限らない。
tftpのサーバーを書くのに各クライアント毎にスレッド回してacceptした
ソケットを割り振るような実装をすればクライアントの数だけ同じポートに
バインドしたソケットが作成される。
0566デフォルトの名無しさん
NGNGそれはUDPというより単にberkley socket libraryの仕様のような気が・・・
0567デフォルトの名無しさん
NGNGけど話は「ソケット」の話だからAPIの話でしょう? UDPにはソケットという概念は無い。
ちなみに確認はしてないがこれはおそらくPosixにも採用された仕様でLinuxとかでも
まず同じだと思う。 Winsockは知らん。
0568デフォルトの名無しさん
NGNGhttp://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/io-strategies.html
0569デフォルトの名無しさん
NGNGいいよ。俺はselectしか使ってない。
0570デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNGGETでURLを投げるとhtmlの内容が取得できるのですが、
exeファイルなどのバイナリファイルは、
どうやって受け取ったらいいのでしょうか?
いまはこんな感じでレシーブしてます。
if (recv(s, recv_buf,sizeof(recv_buf)-1,0) > 0 ){
strcat(recv_result,recv_buf);
}
0572デフォルトの名無しさん
NGNGちゃんとrecvの値受け取って長さ管理しろ
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNG今更socketで1から作る意味はあるんでしょうか
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNGHTTPクライアントなんかwininet使えば数行で書けるよ
ヘッダとか見る必要すらないし
0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNGソケットごとにスレッド作って、
ブロッキングでWinsock呼んで処理させてるんだが、
メインスレッドから強制終了させるのはどうすればいいのかわからん。
Winsockはスレッドセーフかどうか、保証ないんで
closesocketもshutdownも呼べない。
スレッドをAbortしても、ブロッキングしてるから
いつ終了するか、わからない。
WSACancelBlockingCallはWinsock2には無い。
どうすりゃいいの?
0580デフォルトの名無しさん
NGNGWindowsで作らなければいいじゃん
0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNGんでスレッドセーフとは関係ないけど、closesocketすればブロッキングしている
呼び出しはエラーで戻るよ。
0584デフォルトの名無しさん
NGNG>Winsockはスレッドセーフだよ。
>んでスレッドセーフとは関係ないけど、closesocketすればブロッキングしている
>呼び出しはエラーで戻るよ。
http://tangentsoft.net/wskfaq/intermediate.html#threadsafety
および邦訳
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/intermediate.html#threadsafety
これらの記事はどうなんですかね?
いちおう、今はclosesocketで対応しているんだけども、
心配でしょうがない。
0585デフォルトの名無しさん
NGNG病院行け
0586デフォルトの名無しさん
NGNGすべてのクライアントがきちんと切断するとは
限らないわけだし。
0587デフォルトの名無しさん
NGNGどうって、何がですか?
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG注: 接続済みのストリームソケットを正しく閉じるには、
以下が必要になります。
shutdown() を how の引数を 1 に して呼び出す。
recv() が 0 もしくは何らかのエラーを返 すまでループする。
closesocket() を呼び出す。
WSACleanup() を呼び出す。
0590デフォルトの名無しさん
NGNGうまくない。
クライアントからなにも送られてこないと、
ずっとブロッキングしてて、
他のスレッドからsocketいじらない限り、
切断通知もできないし、
正規開放ももちろんできない。
前述の記事とか、MSDNとか読んでるんですが、
Thread Safeとはどこにもかかれてないし、
ソケットを他のスレッドから強制終了するサンプルも、見当たらない。
いいのですかね?
今は、ブロッキングしてるスレッドと別のスレッドから
ソケットを半分閉じて、recvで待って、
closeしているんだけども・・・。
Winsockがスレッドセーフ、というか、
他のスレッドからshutdownしてもいいなら全部解決なんだが。
0591デフォルトの名無しさん
NGNG「前述の記事」では thread safe であるということに肯定的な意見が書かれている。否定的なコメントは無い。
っていうかWinsockがスレッドセーフじゃない事例については漏れも知らない。
だからわざわざ「何が」ってきいたんだけど。
だから shutdown しても良いことは多分間違いないんだけど、
現在の実装でそれが効力を発揮するかどうかはわからない。
TDI が同期化を試みるかもしれないし。っていうか間違いなく試みるか。
あとクライアントAPのバグでもなければ、腐ったコネクション相手に何やってもどうせ
「FIN_WAIT2あたりにしかならん・・orz」
って結果が多いのであまりcleanな終了処理に拘ってもしようがないと思う。
0592デフォルトの名無しさん
NGNGやっぱり保証はないのね。
まぁみんな使っているのであるならよしとしよう。
参考になった。ありがとう。
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNGprocess殺せば後はOSがreleaseしてくれる。
579はthreadのみの終了についてきいてるけどな。
0595デフォルトの名無しさん
NGNGところがリソースはうまく開放してくれるとは限らんのだ
(カーネルリソースは除く)
0596デフォルトの名無しさん
NGNG他スレッドからclosesocketしてたな。今はselect使ってるが。
0597デフォルトの名無しさん
NGNGFD_WRITEでは不十分だと思っているのですが。
送信完了とはデータが相手機器に届きACKが返って来た時の事を考えています。
0598デフォルトの名無しさん
NGNG0599597
NGNGなぜ喧嘩腰?
>やりたきゃアプリケーションで返せ。
だからその方法はどうすれば良いのですか?
上の1行から想像するにsend()データを受け取る側で
全データ受け取ったという内容の送信完了パケットを返す様にして、
送信完了パケットを受け取ったらsend()完了とする、という事ですか?
0600デフォルトの名無しさん
NGNGそれとも相手のアプリケーションが受け取ったタイミングが知りたいの?
あと、知ってからどうするの?
0601597
NGNG希望として相手アプリケーションが受け取ったタイミングが良いです。
出来ない場合には相手側受信バッファに転送されたタイミングでも良いです。
>あと、知ってからどうするの?
いま、ftpみたいなデータとコントロールの2本のソケットを使用したアプリケーションを
作っているのですがデータソケットへのファイル送信が終わったらコントロールソケットに
コマンドを発行したいのです。
send(cmd1)→send(data)→send(cmd2)
という感じですが、send(data)の完了してからでないとsend(cmd2)出来ないのです。
0602デフォルトの名無しさん
NGNGアプリレイヤでやるしかないよ。
> send(data)の完了してからでないとsend(cmd2)出来ない
完了の定義次第じゃね?
0603597
NGNGftpクライアントがサーバからファイルをダウンロードする場合には、
ファイルの転送が終わってから「226 Transfer complete」コマンドが
サーバからクライアントに届きます。
と言うことはファイルをsend()するサーバ側はsend()が完了した事を
知ることが出来るという事ですよね?
598の「そんなものはない」というのは本当でしょうか?
0604597
NGNG>アプリレイヤでやるしかないよ。
了解しました。有り難うございます。
ちなみに、相手の受信バッファに転送された事を知る方法はあるのでしょうか?
>完了の定義次第じゃね?
すいません、調べて見たのですが「完了の定義」とは何の事でしょうか?
何かのオプションで指定するのでしょうか?
0605デフォルトの名無しさん
NGNG>すいません、調べて見たのですが「完了の定義」とは何の事でしょうか?
601での「完了」ってどういう意味?
と書けばよかったのかなあ。
0606デフォルトの名無しさん
NGNGここの多くの住人はUNIX使いです。
UNIX使いはわかんないことがあるといつも逆ギレで対処してますです。。。
言い換えると病気の発作です。
0607デフォルトの名無しさん
NGNGなっとく
0608デフォルトの名無しさん
NGNG逆切れって言うのは、>>599の方を言うんじゃないの?
> だからその方法はどうすれば良いのですか?
とかさ。
0609デフォルトの名無しさん
NGNG(2ch内では)普通じゃないの?
0610デフォルトの名無しさん
NGNGつーか、俺はそういう言い方平気でしてる。
あと、文章にならないキーワードのみの書き込みとかも。
0611デフォルトの名無しさん
NGNGまぁ別に自慢するようなことでもないがな。
0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNG変なプライドは捨てろ。まずMSDN読め。ネットで検索しろ。
自分の手で調べた分だけ身になるんだ。
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNGwinsockに限らずそんなものはない。やりたきゃアプリケーションで返せ。
上司版
winsockに限らずそんなものはない。やりたきゃ自分で実装しろ。
0616デフォルトの名無しさん
NGNG『自分で調べろ(俺にはわかんねぇー!)』
0617デフォルトの名無しさん
NGNGレイヤを明示している前者の方がむしろ親切ジャマイカ?
実際599が「上の1行から想像するに」と書くくらい十分ヒントになっているようだし。
元の質問はwinsockでTCPのackの返った最終データを知るAPI(があると質問者は
仮定しているように見える)の質問と読むのが自然だろうと思うのだが、
599ではいつのまにか、俺のしたいことを実現する方法を手取り足取り教えろに
変わってるんだよな。
598の落ち度は質問者がDQNだったのを予測できなかったことくらいだろう。
0618デフォルトの名無しさん
NGNGPOSTする文字列はどうなりますか?
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNGRFCにしたがって好きにすればいい。
ヘッダにどんな風に料理したのか書くのな。
0621618
NGNGttp://www.h5.dion.ne.jp/~sigma/homepage/cyberspace/httpclient.html
の第11回で使用しているプログラムを使い
アドレスと送信するデータを自分なりに変えていろいろなサイトで試してみましたが、
どこも書き込みできませんでした
name=valueを&で繋げた値をボディ部分で送信するだけではダメなのでしょうか?
またこういう事を勉強できるサイトがあれば教えてください
0622デフォルトの名無しさん
NGNG迷惑だからテストは自分のサーバでやれ
非常識な奴だ
0623デフォルトの名無しさん
NGNGダメじゃないかね。
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1057329161/
http://jbbs.livedoor.jp/computer/351/
0626618
NGNG比較してやっと謎が解けました、なぜか=と&が%..の形式に変換されてました
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
05/01/18 09:18:04ローカル側に落とさずに、更新日時のみ取得はできるのでしょうか?
0631デフォルトの名無しさん
05/01/18 09:37:43できるのでしょうか?
0632デフォルトの名無しさん
05/01/18 09:54:280633デフォルトの名無しさん
05/01/18 10:01:30あなたの質問の意味がわかりません
詳しく書いてくれませんか?
0634デフォルトの名無しさん
05/01/18 10:06:13普通にできる。でないとやってらんないだろ。
0635デフォルトの名無しさん
05/01/18 16:36:04作ろうと思うんだが今さらそんなサイト、需要あるの?
0636デフォルトの名無しさん
05/01/18 16:41:06VB.NETでお願い
0637デフォルトの名無しさん
05/01/18 18:10:48ちゃんと非同期系のメソッドを使ったワーキングサンプルなら
参考にしたい人もいるんじゃないかなー。
0638デフォルトの名無しさん
05/01/18 18:54:24下のようなのをよくみるんですがmemsetはなぜ
必要なんですか?
struct addrinfo hints
memset(&hints, 0, sizeof(hints));
hints.ai_flags = AI_PASSIVE;
hints.ai_family = PF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
0639デフォルトの名無しさん
05/01/18 21:01:040640デフォルトの名無しさん
05/01/18 23:21:27そのデフォールトの値が0でいいような場合は、
0でmemset()してあるソースコードは、生き伸びます。
とあるシステムのstruct sockaddr_inみたいに、
先頭にsin_lenってメンバーが増えた場合には、
0じゃまずいので、コード付け加える必要があるけど。
0641デフォルトの名無しさん
05/01/18 23:31:510642デフォルトの名無しさん
05/01/19 10:29:42どこで入手できるでしょうか?
やはりMSDNに加入しないと入手不可ですか?
0643デフォルトの名無しさん
05/01/19 11:37:58ttp://www.sockets.com/winsock2.htm#Docs
じゃだめなの? 本当の最新版やMicrosoft独自拡張については
MSDNを買う必要があるとは書いてあるけど。
0644デフォルトの名無しさん
05/01/19 11:47:300645デフォルトの名無しさん
05/01/19 12:09:52他のは知らんが、WinsockではTCPの場合sendでWSAENOBUFSエラーになったら
サイズが大きすぎるので、あらかじめもっと小さいサイズを指定して送る必要がある。
もちろん、どんなサイズを指定してもそれより小さなサイズだけ送ってリターンしてくる
可能性については考慮しておくこと。
UDPの場合はそれに加えて他のOSと同様にあれこれ考慮してください。
0646デフォルトの名無しさん
05/01/19 12:45:36あと、VBはほかのマシンのファイルを「ソケット」使わず「ポートとかを指定せず」に書き換えられると聞いたことがあるのですが、
これはTCPもUDPも使わず別のプロトコルを使うというわけですか?
0647デフォルトの名無しさん
05/01/19 12:50:550648デフォルトの名無しさん
05/01/19 12:51:40ソケットはAPI的概念。
「VBは・・・」ってのはMicrosoftが定義したSMBプロトコル(現在ではTCPとUDPの上で出来てる)を
使ってリモートファイルシステムにアクセスできるってこと。Windowsの上で動く大抵の言語(VCでも
PerlでもCMDファイルでも)でできる。
コマンドプロンプトから echo hello >> \\hoge\foo\bar.txt とかすれば、マシンhogeの共有名fooに
bar.txtを作成できる。
>これはTCPもUDPも使わず別のプロトコルを使うというわけですか?
かつてはそういうこともしていた。今はしていないケースが多い。
0649デフォルトの名無しさん
05/01/19 13:20:32送信可能最大サイズを取得する方法はありますか?
0650645
05/01/19 14:20:21これより詳しい説明が必要なら、まず「送信可能最大サイズ」を定義してください。
もしそれが send に渡して WSAENOBUFSエラーにならないバイト数のことなら、
事前に知る術はないです。PCのメモリ搭載量によって変動するみたいですが。
ブツがファイルでOSが Windows XP/Windows Server 2003 ならTransmitFileなり
TransmitPackets使えば、おそらくファイルの最大サイズまで一度の呼び出しで送れるでしょう。
また、TransmitPacketsのドキュメントには、このAPIがメモリ上のデータを自動的に
複数のsend呼び出しに分割して実行してくれそうなことも書かれています(使ったことないけど)。
0651デフォルトの名無しさん
05/01/19 15:49:03もちろん活性化されて歓迎なんだが・・・・
0652デフォルトの名無しさん
05/01/19 19:04:150653デフォルトの名無しさん
05/01/19 21:22:47パスワードをクライアントに安全に保存しておくのにいい方法はありませんか?
ちなみにサーバの仕様でパスワードを平文で送らないといけないので、
暗号化して保存しておくなら、クライアントサイドで復号化しないといけません。
0654デフォルトの名無しさん
05/01/19 21:45:11無い。
0655デフォルトの名無しさん
05/01/19 22:18:400656デフォルトの名無しさん
05/01/19 22:36:18多くのクライアントPCでは簡単に自分で送受しているパケットの内容をスニファーなどで
簡単に確認することができるので、サーバに平文を送るのなら安全に保存すること自体
あまり意味ありません。
スニファーも使えないような人向けのカジュアルな改ざん防止程度なら、
アプリ内部で適当にDESでも使って暗号化しておけば十分でしょう。
0657デフォルトの名無しさん
05/01/19 23:14:37ソケットというのは元々通信する同士の間の接続の端っこを、
プログラム上で扱うために考えられた仮想的な概念。
糸電話の耳や口を当てる部分と思えばいい。
そこに書き込むと相手に送られ、そこを読むと相手が送ったものが読める。
0658デフォルトの名無しさん
05/01/19 23:16:100659デフォルトの名無しさん
05/01/19 23:16:44そのためのスレなので(w
0660デフォルトの名無しさん
05/01/19 23:18:32>>655も言っているけど、
ローカルに秘密にデータを保存したいって事だから、
ネットワーク関係ないよね。
そのシステムのkey ring, password manager APIでも調べたら。
専用の板やスレがあるからそこで。
0661デフォルトの名無しさん
05/01/19 23:26:50>2-3は無視ですかw
ちゃんと理解できるならどんな方法でも良いんだけどね
0662653
05/01/19 23:42:15セキュリティ暗号化の話だと思ったのですが適当なスレがなかったので・・・
>>656
サーバの送信時は仕方ないので、カジュアルな改竄防止程度でいいと思っています。
DESだと暗号鍵、復号鍵をアプリに含める必要がありますが、
一度鍵がばれちゃうと意味ないので、インストール時に作成するようにすればいいですね。
パスワードをやってるメーラとか大抵どうやってるんでしょう?
オープンソースのメーラのソース見てみたんですが、よく分かりませんでした。
0663653
05/01/19 23:48:24>オープンソースのメーラのソース見てみたんですが、よく分かりませんでした。
ちなみにsylpheedのソース見ていたんですが、
よく見ると
使用するユーザのパーミッションでしか見れない設定ファイルに平文書きでした。
Thunderbirdとかでもいっしょかな??
0664デフォルトの名無しさん
05/01/20 01:08:26都合の悪い>>660は無鹿よ!?氏ねや
0665デフォルトの名無しさん
05/01/20 01:23:25■暗号技術【ROUND2】■
がいいんでない?
…程度の誘導はくらいはしろよ>>馬鹿の664
0666デフォルトの名無しさん
05/01/20 10:59:50数値データ,文字データ,数値データのように型の異なるものを、
一括でSENDしたいのですが、送信文字列の編集がまったくうまくいきません。
この場合どうやってセットすればいいんでしょうか?
ぐぐって調べてみたのですが、
バイナリデータの送信という形になるのでしょうか?
0667666
05/01/20 11:12:15無駄使い申し訳ない。
0668デフォルトの名無しさん
05/01/20 12:13:290669666
05/01/20 12:26:07構造体を丸々セットすればいいということでしょうか?
0670デフォルトの名無しさん
05/01/20 12:31:08>>668のようにすると、簡単に思いつくだけでも
- バイトオーダー
- 型の大きさ (intが何バイトか等)
- 構造体のパッキング
といったマシンやコンパイラ・コンパイルオプションに依存した通信となる。
0671666
05/01/20 13:21:12数値はlong型のみで、入れる値はネットワークバイトオーダーで固定して、
受信相手はWindows2000とXPのみにするつもりです。
構造体のパッキングは、意味がわからなかったので、ぐぐってみたのですが、
桁数制限のことであってますか?
0672デフォルトの名無しさん
05/01/20 13:27:25普通パディング(詰め物)って言わないか?
パッキングなんて初めて聞いたぞ
0673デフォルトの名無しさん
05/01/20 13:31:38とかで使われているからじゃない? わしも使わないが。
アライメントとかいう時もある。
0674デフォルトの名無しさん
05/01/20 13:32:34#include<pchpack1.h>
struct{
...
};
#include<poppack1.h>
0675デフォルトの名無しさん
05/01/20 13:35:44キリの悪いアドレスからの
読み書きは遅い(CPUによってはバスエラーになる)から
構造体の要素の間に隙間をあけて
キリのいいアドレスにデータの先頭の位置をそろえること。
(隙間の入り方はCPUアーキテクチャや
コンパイラ、コンパイルオプションで変わる。)
ネットワークバイトオーダはIntelCPUの整数と逆だからきおつけれ。
0676デフォルトの名無しさん
05/01/20 14:13:22広義にはパディングを決めて、構造体全体のサイズと
その中での要素の配置を決定すること。
C言語の構造体以外にも似たような(物理的)内部フォーマットの意味で使われる。
(例: 「16ビットピクセルのビットパッキング」)
狭義にはパディングを(CPUがアドレッシング可能な範囲で)極力なくして
構造体を小さくすること。
数値はlongのようにアーキによって変わるものではなく
int32_tのようなサイズを明示したものを使え。
0677666
05/01/20 14:15:36これから実装に入ります。
ありがとうございました。
0678666
05/01/20 16:13:08今度は構造体データ受信部分うまくいきません。
受信部分のバッファを構造体(rsp)に指定すると、
データがうまくセットできず、
recvfrom(s,(char *)rsp, sizeof(*rsp), 0, (SOCKADDR *)&from_addr, &i_fromlen)
char型のバッファ(c_buf)に指定すると、
recvfrom(s,c_buf, sizeof(*rsp), 0, (SOCKADDR *)&from_addr, &i_fromlen)
文字列箇所はうまくいきますが、
数値データの箇所で、数値に変換してホストバイトオーダーをかけても
データが思ったとおりのものがセットできません。
受信部分のバッファには何をセットすればいいのでしょうか?
0679デフォルトの名無しさん
05/01/20 18:10:48もしかしてC/C++使うのは初めてですか?
あるいは単にWOULDBLOCエラーあたりになって何も受信されてないとか。
あるいはストリーム型ソケットで受信サイズを見ていないとか。
0680デフォルトの名無しさん
05/01/20 20:56:27初心者ですいません orz
0681デフォルトの名無しさん
05/01/20 21:20:19128頁に書いてある。仕様関係はまずRFC読む。
0682デフォルトの名無しさん
05/01/21 04:07:47まず日本語に訳せ
0683デフォルトの名無しさん
05/01/21 06:11:13http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616
あるいは
http://www.studyinghttp.net/translations
でもRFCって原書で読むでしょ。
0684デフォルトの名無しさん
05/01/21 06:47:392chも使っているよ。
0685デフォルトの名無しさん
05/01/21 08:27:15黙れ雑魚が。この程度の英語ぐらい読んでくれよ、マジでおながいします。
0686デフォルトの名無しさん
05/01/21 08:49:21「ほう、根拠は?」
「RFCに書いてあります。」
「本当にそう書いてあるのかね? 私には多少違うように見えるのだが。」
「そう2chで言ってました。」
「……。」
0687666
05/01/21 08:53:17お察しのとおり、C/C++使うのは初めてです。
いままでJAVAとVBしか組んだことありません。
ネットワークプログラムも初めてです。
RFCなども一通り目を通しましたが、
わからないことだらけで(汗
もう一度基本からやりなおします…
0688デフォルトの名無しさん
05/01/21 10:44:45{
SOCKET sock1 = socket();
// sock1 = 1000
closesocket( sock1 );
SOCKET sock2 = socket();
// sock2 = 1000
closesocket( sock1 );
// ここで、sock2も閉じられてしまう
}
sock1をcloseしたことで、ディスクリプタが解放されて、
sock2で、sock1と同じハンドルが返ってくるのはわかるのですが、
sock2を取得した後に、sock1をcloseするとsock2まで閉じてしまうのですが・・・
これって、仕様なのでしょうか?(エラー返さないし、仕様なのでしょうけど・・・)
やはり、closesocket()したあとに、SOCKETには0を入れ、
closesocket()をする前に0のチェックを入れるべきなのでしょうか?
0689デフォルトの名無しさん
05/01/21 10:57:58ってゆうか、プログラミングの初歩から学習しなおした方がいいかも。
たとえば、これも。
>やはり、closesocket()したあとに、SOCKETには0を入れ、
>closesocket()をする前に0のチェックを入れるべきなのでしょうか?
どうして 0 が SOCKET として無効な値だって分かったの?
0690デフォルトの名無しさん
05/01/21 11:01:47「変数」と「変数の持つ値」ってのは
ネットワークとは関係ない、プログラミングの初歩の初歩だよね。
0691デフォルトの名無しさん
05/01/21 11:47:48> sock1をcloseしたことで、ディスクリプタが解放されて、
ディスクリプタの意味が全く分かってない(嗚呼
0692デフォルトの名無しさん
05/01/21 12:00:23>sock1をcloseしたことで、ディスクリプタが解放されて、
>sock2で、sock1と同じハンドルが返ってくるのはわかるのですが、
頭おかしい、handleの値を議論するなんてばかげてる。
0693デフォルトの名無しさん
05/01/21 12:57:54フリーのライブラリってないですか?
0694デフォルトの名無しさん
05/01/21 13:14:42表示して、同じだったから、おかしいと思ったんですが・・・
>>690
書き方が悪かったです・・・
>>691
ごめんなさい
>>692
ハンドルの値が同じだから、sock1をcloseしたときに
sock2が閉じてしまうと思っていたのですが、違うのですか?
0695688
05/01/21 13:15:38表示して、同じだったから、おかしいと思ったんですが・・・
>>690
書き方が悪かったです・・・
>>691
ごめんなさい
>>692
ハンドルの値が同じだから、sock1をcloseしたときに
sock2が閉じてしまうと思っていたのですが、違うのですか?
0696688
05/01/21 13:16:050697デフォルトの名無しさん
05/01/21 18:52:41そのソースコード、なんでsocket1を2回も閉じてんの?
0698デフォルトの名無しさん
05/01/21 19:11:27結局意図した通りになっているのでアレ?って思ったとか。
0700デフォルトの名無しさん
05/01/21 20:16:10#define INVALID_SOCKET (SOCKET)(~0)
になってる。
0701デフォルトの名無しさん
05/01/21 20:21:57それは設計ミスです。
そういう設計だとすると、他の箇所でdeleteやfreeを2回したりもしてませんか?
0702デフォルトの名無しさん
05/01/21 20:31:03ハンドルってのはソケットを一意に識別するものだから、ハンドルが同じってことは
その2つのハンドルが示しているソケットの実体は1つしかないってことだ。
そしたら、socket1を閉じたらsocket2も閉じたように見えるのは当たり前じゃないか。
0703デフォルトの名無しさん
05/01/21 21:06:11いや、少なくとも>>688には関係あるだろ、それ。
>>695
同じ時刻に同じプロセス内で同じ値だったら実体は1つだが、
今回の件では、socket1を閉じた後の話なんだから、実体が
1つのわけないじゃん。一から勉強しなおせ。
0705デフォルトの名無しさん
05/01/21 21:10:36んなこと分かっとるがな。閉じた後偶然同じハンドルが入ってきても
それは当然別物だ。
0707デフォルトの名無しさん
05/01/21 22:08:07これは設計が悪い。
まず、ソケットハンドルというのは突き詰めれば結局単なるint型だということを念頭において考えると。
変数socket1でソケット作ったら、例えば10が返ってきたとする。次にそれをクローズする。
クローズしても、socket1という変数(int)自体にはまだ10が入ったまま。
次にsocket2で別のソケットを作る。そしたら偶然、ハンドルとして与えられた数が10だった。
この時点でsocket2という変数には10が入る。そして、socket1を引数に与えてソケットをクローズする。
そうするとコンピュータは、同じ10という数字なので区別ができず、結果、socket2は閉じられることになる。
結論としては、無意味に2回もクローズするのをやめないといけない。
0708デフォルトの名無しさん
05/01/21 22:44:40丁寧に説明していただき、ありがとうございます。
SOCKET(ネットワーク)という、今まで勉強してこなかった分野だったので、
なにやら、特別なものという考えが自分の中にあったのだと思います。
理論上はわかっていても、なんだか疑ってしまって・・・
設計が悪いというのは、うすうす気づいていたのですが、
前述のような、迷信にはまっていたので、疑いを持ってしまっていたようです。
設計を見直して、closeを2度呼ばないよう変更します。
なんだか、すっきりした感じです。
こんな初歩的なことに答えてくれて、ほんとにありがとうございました。
0710デフォルトの名無しさん
05/01/22 00:07:030711デフォルトの名無しさん
05/01/22 00:38:040712デフォルトの名無しさん
05/01/22 00:48:380713デフォルトの名無しさん
05/01/22 00:57:321回のlengthはどの位が最適でしょうか?
やはりsend()したいデータ量すべてをlengthに設定して定石のループ処理を
するのが良いのでしょうか?
0714713
05/01/22 01:03:22あまり大きいサイズを指定するとWSAEMSGSIZE(だったかな?)などの
エラーが返って来ることがあってエラー処理が増えて面倒だなと。
どうせループの中でsend()を分割するのなら最初から分割した方がスマートかなって思いました。
0715otasuke
05/01/22 01:39:56IPアドレスやリモートホストより、
特に同意を受けなくてもネットワーク契約を行ってもよろしいのですか?
0716デフォルトの名無しさん
05/01/22 02:08:47質問する板がちがいます
0717デフォルトの名無しさん
05/01/22 02:23:28一部を送るんじゃなくて、何も送らず例外発生するから(ドキュメントにはちゃんと書いてあるが)。
面倒くさがらずにエラー処理するのが筋かと。
0718デフォルトの名無しさん
05/01/22 03:28:57インターネット違い
0719デフォルトの名無しさん
05/01/22 08:38:16大きく送ると、Gigabit Ethernetのgiant packetをうまく利用してくれるかもしれません。
特に理由もなく、小さくsend()するのは損です。
0720デフォルトの名無しさん
05/01/22 18:18:53g_SocketErrorCheck(WSAGetLastError());
取得されたエラー値が関数に、渡りません。
こういう感じなら渡るのですが。
i_err = WSAGetLastError();
ig_SocketErrorCheck(i_err);
WSAGetLastErrorの仕様??
0721デフォルトの名無しさん
05/01/22 22:27:53あるいは、WSAGetLastError()の"Last"の意味を勘違いしているという事はないですか?
0722デフォルトの名無しさん
05/01/23 08:28:21自分は心の中で
「うぃんそっく」「うぃんあいねっと」と読んでいます。
0723デフォルトの名無しさん
05/01/23 09:08:12●● 時刻同期ソフトを使ってる人々へ ●●
同期先のNTPサーバに福岡大学(clock.nc.fukuoka-u.ac.jp)のを使ってる人、
同大学の管理者が過負荷で困ってるから、至急他のサーバに設定を変更するように。
福岡大のNTPサーバがアクセス集中で悲鳴
http://www.itmedia.co.jp/news/articles/0501/21/news059.html
http://headlines.yahoo.co.jp/hl?a=20050121-00000039-zdn_n-sci
http://news19.2ch.net/test/read.cgi/news/1106301899/l50
記事の元になった管理者の悲鳴
http://pc5.2ch.net/test/read.cgi/linux/1008318869/500n
プロバイダ別NTPサーバリスト
http://www.wikiroom.com/?%A5%D7%A5%ED%A5%D0%A5%A4%A5%C0%CA%CCNTP%A5%B5%A1%BC%A5%D0%A5%EA%A5%B9%A5%C8
0724747
05/01/23 11:14:18簡単に書くと、こんなかんじです。
int ig_SocketErrorCheck(int i_err){
if(i_err != 0){ //
エラー処理
return false;
}
return true;
}
WSAGetLastError()の"Last"の意味は、
一番直前に使用されたWinsock関数のエラーと思っていたのですが、
それが間違ってますか?
0725724
05/01/23 12:55:39勘違いで失礼いたしました。
0726デフォルトの名無しさん
05/01/24 21:49:20おんなじ
0727デフォルトの名無しさん
05/01/25 00:56:04↑に。
所でWSAStartupとか"WSA"で始まる関数をなんて読んでます?
「ダブルエスエー○○○」って読んでましたが、
この前「ウーサ○○○」って読んでる人がいて違和感を感じたのですが。
0728デフォルトの名無しさん
05/01/25 15:06:580729デフォルトの名無しさん
05/01/25 16:35:01受け取ったパケットが、どのプロセスで使用されているのか知るにはどうすればいいのでしょうか?
netstatなどのようなコネクションモニタの情報とパケット内のポート番号とを照らし合わせるのでしょうか?
でもこれだと、UDPだと無理ですよね。
0730729
05/01/25 16:53:24netstat -ao
でいけますね。
あとは、AllocateAndGetTcpExTableFromStackを使って・・・。
定石ではどのようになっているのか教えていただけると幸いです。
0731デフォルトの名無しさん
05/01/26 01:12:52それはおかしいなどう考えても。俺は普通にダブルエスエー。
charって外人はなんていうんだろう。
0732デフォルトの名無しさん
05/01/26 01:26:460733デフォルトの名無しさん
05/01/26 04:03:32それでいい(netstat -aon)と思うけど
netstat使いたくないならnetstatのソース見て
自分で実装すれ
0734デフォルトの名無しさん
05/01/26 04:20:19どこにソースがあるんですか?
0735デフォルトの名無しさん
05/01/27 06:27:060736デフォルトの名無しさん
05/01/27 06:32:00→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
↓
0737デフォルトの名無しさん
05/01/27 07:11:07ttp://www.tamos.com/products/nettools/
0738デフォルトの名無しさん
05/01/27 10:43:18なんか、*だけとか入れても、エラーじゃなくて
得体の知れない値に変換しちゃうんですけど。
0739デフォルトの名無しさん
05/01/27 11:05:15***.***.***.***が何を表現しているか考えればわかるでしょ。
0740デフォルトの名無しさん
05/01/27 11:23:47書式チェックまではしてくれないんですね…
どもです
0741デフォルトの名無しさん
05/01/27 11:32:30*も正しいから。
0742デフォルトの名無しさん
05/01/27 12:07:370743デフォルトの名無しさん
05/01/27 13:04:34inet_addr()はかなり無茶な曲芸をする。 例えば
1 → 0.0.0.1 (単に整数と解釈)
1.1 -> 1.0.0.1 (間の0.0を省略したと解釈する)
0x01010101 -> 1.1.1.1 (4byte の16進整数と解釈する)
16843009 -> 1.1.1.1 (上と同じのを10進)
010.010.010.010 -> 8.8.8.8 (010を8進と解釈する)
古いアプリだとユーザの入力を直接inet_addr()に食わせるので上のような変な
アドレスを直接食わせられる。 最近のアプリはgetaddrinfo()にユーザ入力の
アドレスを処理させるがこれはinet_addr()の妙な動作は全て取っ払われ、
10進の4桁ドット形式しか認めない。
0744デフォルトの名無しさん
05/01/27 13:59:280745デフォルトの名無しさん
05/01/27 14:01:380746デフォルトの名無しさん
05/01/27 14:08:47>1.1 -> 1.0.0.1 (間の0.0を省略したと解釈する)
うはwwww
0747デフォルトの名無しさん
05/01/27 15:58:52Class Aもらってるとこなんかはそれで便利に使ってたわけだ。
0748デフォルトの名無しさん
05/01/27 16:02:290749デフォルトの名無しさん
05/01/27 18:26:54http://www.itmedia.co.jp/broadband/0302/26/lp17_2.html
0750デフォルトの名無しさん
05/01/27 19:41:430751デフォルトの名無しさん
05/01/27 19:59:59うはOK
0752デフォルトの名無しさん
05/01/28 12:58:21そんな気分だったの?
0753デフォルトの名無しさん
05/01/28 19:21:050754デフォルトの名無しさん
05/01/29 00:06:560755デフォルトの名無しさん
05/01/29 06:42:44そんなにたくさん、もったいないな。
0756デフォルトの名無しさん
05/01/31 09:19:16www.google.com
のようなファイル名部分が省略されたURLを
HTTPでgetする時に実際に取得されるファイル名を知る方法はありますか?
index.htmlなのかindex.phpなのかとか。
0757デフォルトの名無しさん
05/01/31 09:39:02リクエスト側は(ルートなら) "/"をGETするだけだし
仮に"/tech"みたいなディレクトリであったなら、
(普通は)リダイレクトで"/tech/"になって再度GETが入るだけ。
で、"/"をGETした時に何が送られてくるかは、サーバーの設定次第。
0758デフォルトの名無しさん
05/01/31 10:05:060759デフォルトの名無しさん
05/01/31 10:12:530760デフォルトの名無しさん
05/01/31 10:14:010761デフォルトの名無しさん
05/01/31 12:05:320762デフォルトの名無しさん
05/01/31 12:28:18あまり関係ないことばかりだし。
GET / HTTP/1.0
で送られてくるのが"index.html"か"index.htm"か"default.asp"か
あるいは別の何かなのか、その名前を取得できるかという質問なんだから。
ちなみに、apacheの場合は
"/"のみの場合も含め、ディレクトリをGETした時に送られるファイルは
DirectoryIndexで指定するようになっている。
サーバーの設定じゃないって言うなら、どこで決まってるというのかね?
0763デフォルトの名無しさん
05/01/31 12:48:21文章の書きかたがまるで駄目なので読むだけ無駄でしょう。
0764デフォルトの名無しさん
05/01/31 12:58:46ないです。以上。
0765デフォルトの名無しさん
05/01/31 15:30:10こういうアホっているよね。「そんなことない」とだけ書いて
全くその根拠を示さない奴。
0766デフォルトの名無しさん
05/01/31 15:42:480767デフォルトの名無しさん
05/01/31 17:09:490768デフォルトの名無しさん
05/01/31 21:44:140769デフォルトの名無しさん
05/01/31 22:00:39サーバによってはContent-Dispositionを一緒に送ってくることがあるから、
それで一応知ることはできるけど、信じるかどうかはクライアント次第
0770デフォルトの名無しさん
05/02/01 00:19:240771デフォルトの名無しさん
05/02/01 18:12:59このサイトみたいにグローバルIP返してくれるも
う少しコンパクトHTMLはいてくれるサイトないですか?
単なる確認用でアプリに組み込むわけではありません。
0772デフォルトの名無しさん
05/02/01 18:20:510773デフォルトの名無しさん
05/02/01 20:37:290774デフォルトの名無しさん
05/02/02 05:53:24それだけかYO!
0775デフォルトの名無しさん
05/02/02 07:00:34という要求は満たしているわけだが。
0776デフォルトの名無しさん
05/02/02 10:16:18Windowsアプリ向けの共通ライブラリを作っているのですが
WSAStartup/WSACleanupのスコープってどこまでなのでしょうか?
アプリ本体がWinsock使っているかにかかわらず、ライブラリ内で
通信したいのです。
静的リンクだとアプリ本体と同じインスタンスですが、2回以上
呼んでしまっても良いのでしょうか?
DLLにして動的リンクならOKなのでしょうか・・・?
0777デフォルトの名無しさん
05/02/02 10:22:43申し訳ない。アンカー消し忘れました。
0778デフォルトの名無しさん
05/02/02 11:01:07マニュアルちゃんと読みなさい。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/wsastartup_2.asp
An application or DLL can call WSAStartup more than once if it needs
to obtain the WSADATA structure information more than once. On each
such call the application can specify any version number supported by
the DLL.
An application must call one WSACleanup call for every successful
WSAStartup call to allow third-party DLLs to make use of a WS2_32.DLL
on behalf of an application. This means, for example, that if an
application calls WSAStartup three times, it must call WSACleanup
three times. The first two calls to WSACleanup do nothing except
decrement an internal counter; the final WSACleanup call for the task
does all necessary resource deallocation for the task.
0779デフォルトの名無しさん
05/02/02 13:35:18>マニュアルちゃんと読みなさい。
見落としていました。
ありがとうございます。
0780デフォルトの名無しさん
05/02/02 15:33:29setsockopt(s,SOL_SOCKET,SO_BROADCAST,(optionval,sizeof(optionval)
こういう感じで、ブロードキャストの設定をオンにしたのですが、
これをデフォルト値に戻す時はどうやればいいのでしょうか?
optionval をfalseにしてもうまくいかなくて…
0781デフォルトの名無しさん
05/02/02 15:43:23> optionval をfalseにしてもうまくいかなくて…
念のため確認するがfalseにしてもう一度setsockoptを呼んだんだよね?
0782デフォルトの名無しさん
05/02/02 15:48:46BOOLじゃなくて char (unsigned char でも良いけど) にするべきなんじゃないかなー。
さほど自信ないし、他人事だからどうでもいいけど。
0783780
05/02/02 16:01:54782>>MSDNはBOOLになってるんですが、
一応試してみます。
0784デフォルトの名無しさん
05/02/02 18:02:07それだけしかないサイトなんだなぁと思って。
0785デフォルトの名無しさん
05/02/02 18:11:18dyndns.org っていうドメインから、checkipの目的がわかると思うけど。
0786デフォルトの名無しさん
05/02/02 18:19:21何だと?dyndnsを使ってると悪いのか?
0787デフォルトの名無しさん
05/02/02 18:32:57>>785は>>784へのレスですよ。
0788デフォルトの名無しさん
05/02/02 19:10:15もうだめぽ
0789デフォルトの名無しさん
05/02/02 19:23:020790デフォルトの名無しさん
05/02/02 19:26:450791デフォルトの名無しさん
05/02/02 19:54:06もうだめぼ
0792デフォルトの名無しさん
05/02/02 19:55:590793デフォルトの名無しさん
05/02/03 02:58:190794デフォルトの名無しさん
05/02/03 09:39:55受信したB端末からブロードキャストを投げ返しているのですが、
A端末が自分で放ったブロードキャストを受信しないようにするには
どうすればいいのでしょうか?
B端末のブロードキャストだけ受け取りたいのに、
自分で送信したものまで受信してしまいます
0795デフォルトの名無しさん
05/02/03 10:25:59recvfrom()でどこから来たか見て自分からだったら捨てる。
0796デフォルトの名無しさん
05/02/03 12:16:42できました!
ありがとうございます!
0797デフォルトの名無しさん
05/02/05 15:33:00買ってくらさい。
0798デフォルトの名無しさん
05/02/05 22:41:19その辺の情報の載ったサイトとか本ありませんか?
0799デフォルトの名無しさん
05/02/06 15:52:53という文があったら
POSTする時に...&aiueo=&...としなければいけませんか?
それとも""のパラメータは省略可能ですか?
0800デフォルトの名無しさん
05/02/06 16:44:560801デフォルトの名無しさん
05/02/06 18:33:00もう一声(w
0802デフォルトの名無しさん
05/02/06 19:12:06>>801
?????
0803デフォルトの名無しさん
05/02/06 21:24:16ブラウザでも作ってるの?
ナンにせよ、空白を意味するパラメータになるので、...&aiueo=&...を付けないといけない
0804デフォルトの名無しさん
05/02/06 21:48:09これってどういう時に発生するのでしょうか。
必ず発生するタイプの物では無いのです。それなりに低い確率で発生している様です。
しかも、GetQueuedCompletionStatusを叩いてから数秒経ってから落ちているのです。
Windowsが一般に表示するアプリケーションが落ちた時のダイアログのモジュール名
にはunknownと書かれていました。
デバッグログ出力のコードを入れて調査をしていた所、どうやらその例外が発生す
る前にはそのIO完了ポートに関連付けるサーバソケットを生成して動かしている…
というコードが別スレッド(メインスレッド(GUIを主に動かしている))で走ってい
るという共通点がある様なのです。
この手順はsocket(listen),setsockopt,bind,listen,CreateIoCompletionPort,socket(accept),
AcceptExです。
そのプログラムはサーバソケットの生成と破棄を激しく繰り返します。
そのプログラムは一度に同一マシンで20〜40プロセスぐらい動かしています。
更にそれを20マシンぐらいで同時に動かします。その上で1時間に1〜5ぐらいの例外
が発生するのです。
そのプログラムでは他にもスレッドが10個ぐらい動いていて、それらのスレッドで
はIO完了ポートを使わずに一般的なノンブロッキングソケット/ブロッキングソケ
ット等を使っている様です(ライブラリの中なので見れない)。
OS:Windows XP SP2
Winsock:(2,2)
何か知っている事があれば教えて頂きたいです。
個人的にはWindowsのバグな気がしているのですが。
0805デフォルトの名無しさん
05/02/06 23:01:33<input type="checkbox">な奴は、チェックされてないと
値が渡って来ないよ。それ以外は全部空でも渡ってくる。
0807デフォルトの名無しさん
05/02/07 07:30:28仕様という意味では、値を持たないフォームは無視してもOK。
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#h-17.13.1
ただ、POSTされたデータを受ける側が空白値を期待している場合は送信しないと
ちゃんと動かないだろうね。そういうCGIとかたまにあるんだよなぁ…。
0809デフォルトの名無しさん
05/02/07 19:45:29TCPとかで別の誰かと通信が可能な状態にあります。
このディスクリプタを使って、通信している自分のNICの
MACアドレスを取得したいのですが、どうしたらいいでしょうか
Linuxです (Fedoracore3ですけどディストリは関係ないですよね)
0810デフォルトの名無しさん
05/02/07 20:05:31struct ifreq if_hwaddr;
if(ioctl(sd, SIOCGIFHWADDR, &hwaddr) < 0) {
perror("ioctl SIOCGIFHWADDR");
}
…かな。if_hwaddr.ifr_hwaddr に MAC アドレスが入るはず。
ioctl(2), ioctl_list(2), netdevice(7) あたり見とけ。
0811デフォルトの名無しさん
05/02/07 20:10:01それはraw socketじゃないと。
取得する前にinterfaceを指定しないといけないし。
0812デフォルトの名無しさん
05/02/07 20:10:34そのディスクリプタでは無理です。
0813810
05/02/07 20:11:130814デフォルトの名無しさん
05/02/07 20:15:040815デフォルトの名無しさん
05/02/07 21:23:440816809
05/02/07 21:44:30ありがとー
やってみます。
SIOCGIFHWADDRってgoogleしてもあんまり情報ないね
>>815
やったけどNosuchdeviceと言われました。
こんな漢字
getsockname( sd, &addr, &addrlen );
ad = socket( AF_INET, SOCK_DGRAM, 0 );
sin = (struct sockaddr_in *) &arp.arp_pa;
sin->sin_family = AF_INET;
memcpy( &sin->sin_addr, &addr, sizeof(struct sockaddr_in) );
ioctl( ad, SIOCGARP, &arp ); ←ここでエラー
0817デフォルトの名無しさん
05/02/07 22:41:14いやいや、>>815のソケットにSIOCGIFHWADDRすんだよ。
ifr_nameにインターフェース名を設定してから。
bzero(&req, sizeof(req));
strcpy(req.ifr_name, "eth0");
result = ioctl(s,SIOCGIFHWADDR, &req);
if (result == -1) {
perror("SIOCGIFHWADDR");
exit(1);
}
後、socket(AF_PACKET, SOCK_DGRAM, ntohs(ETH_P_IP))の間違い。
0818デフォルトの名無しさん
05/02/07 22:53:59getsockname でこちら側のIPアドレスを得て、
あとはifconfigのソース読んで・・・
0819809
05/02/07 22:56:33きめうちで"eth0"ぶちこんだらできました
ETH_P_IPが見当たらなかったので 0 にしちゃったけど動きました
まあそれはあとでなんとかするとして
具体的な流れとしては、調べたいソケットに対して
1. getsocknameでIPゲット
2. ???でインターフェース名を取得
3. SIOCGIFHWADDRでMACアドレス取得
こんな感じですかね
これから2.を調べます。
0820デフォルトの名無しさん
05/02/07 23:24:23> ETH_P_IP
たしか <net/ethernet.h> とかにあると思う
0821デフォルトの名無しさん
05/02/07 23:36:45> 1. getsocknameでIPゲット
Routingによるんで、
外へでるインタフェースが複数ある時はこれではダメ。
routring tableはioctl(2)で取得可能。
インターフェース名も分かる。(netstat -rを参照のこと)
ETH_P_IPは、AF_PACKETなsocketとして使わない時は必要ないんでした。
0822809
05/02/07 23:40:23自分が待ちうけのプログラムで、相手と接続しているときの
ソケットを使ってgetsocknameすれば相手と接続しているはずの
IPアドレスが取れるかと思ったけど、そうでもないんですか?
たとえば、自分自身へ接続するときも localhostで接続と
IP指定で接続したときとで 自分のIP がきちんと変わっていたので
安心していたんですが
0823デフォルトの名無しさん
05/02/08 00:23:30Local sideのIP addressなんて、どのinterfaceから出ていくかに全く関与しないよ。
IPのroutingの常識。その辺から勉強し直して、netstat -rの結果を理解して。
ARP table見て 、IP address/MAC addressの対応が分かっても、
packetの出ていくinterfaceとは何の関係もない。
0824809
05/02/08 00:33:54別にその辺は厳密じゃなくてもいいので すみません
0825デフォルトの名無しさん
05/02/08 00:59:090826デフォルトの名無しさん
05/02/08 08:03:47> 全く関与しないよ。
全くっていうのは言い過ぎでは?
まあ待ち受け側の場合は原則としては関与しないで正しいけど、
片側が private network で、片側が the Internet であるような
場合、たとえ待ち受け側であっても、通信に使われる interface の
IP アドレスと、getsockname() で得られる IPアドレスが等しい
ような運用をしていることがほとんどでは?
0827デフォルトの名無しさん
05/02/08 10:16:200828デフォルトの名無しさん
05/02/08 13:55:280829デフォルトの名無しさん
05/02/08 23:06:22http://pc5.2ch.net/test/read.cgi/tech/1106490240/403
どなたか原因解りませんか?
0830デフォルトの名無しさん
05/02/08 23:38:11全てのanonymous FTPサーバでダメか?
つか、そのくらいの質問なら書けや。なんであっちこっちとばにゃならんねん
0831829
05/02/09 00:05:58全てと言われるとアレですが、同一セグメント内のDebian proftod、
レンタルFirstServer鯖、ftp.ring.gr.jpと三カ所試して全滅でした。
anonymousログインして、実データの転送開始するSocket.Readが
反応帰ってこない所までは追いかけたのですが、そっから先何が悪い
のか検討つきませんでした。Passiveも同様です。
ユーザー認証してログインした場合は、前2者正常にダウンロード
できました。
ttp://support.microsoft.com/default.aspx?scid=kb;ja;812409
これでクラッシュ
C:¥> FtpClient.exe -uftp://servername/filename -mget
これはOK
C:¥> FtpClient.exe -uftp://servername/filename -mget -ukuser:pass
0832デフォルトの名無しさん
05/02/09 00:23:18>>831
> ttp://support.microsoft.com/default.aspx?scid=kb;ja;812409
> これでクラッシュ
> C:▼> FtpClient.exe -uftp://servername/filename -mget
> これはOK
> C:▼> FtpClient.exe -uftp://servername/filename -mget -ukuser:pass
FtpClient.exe -uftp://servername/filename -mget -ukftp:[email protected]
だったらOKとか? まさかとは思うけど。
0833804
05/02/09 02:37:19GetQueuedCompletionStatusを叩いていたスレッドは死んでませんでした。
メインスレッドからPostQueuedCompletionStatusしたら、ちゃんとウェイクアップ
してました。
って事で、スレッドもIO完了ポートも死んでませんでした。
死んでいた様に見えたのは、より下のレイヤ、良く分かりませんがWinsockに何かが
起こったからの様です。その為に一切のイベントが上がって来なかった為にスレッド
が死んでいる様に見えたというだけの様です。
その現象が発生した後には、ライブラリ内のソケット生成等も失敗していた様でした。
という事で、こういった現象を知っていたら何か教えて頂けないでしょうか。
0834デフォルトの名無しさん
05/02/09 05:20:570835デフォルトの名無しさん
05/02/09 10:18:30. i゙::::::i ''''''''''' '───' |;;;;;;;;;;;;::::::::::::::::::::|
.|:::::::|,-====-´ ゙ヽ,,,,,,,,,,,,,、 |:::::::::::::::::::|
|;::::::::|,-──、 ~,.--`‐、 |:::::::::::::::::::|
`ヽ、i )__r'´ )__|;::::::::::::::/ なんで、人がゴミのようなん?
. ヽ、__、/< ヽ、__、- /^゙-、;;;;/
{ ' ' '-'~ノ
λ ____ /-'^"
ヽ,_ `ー─''´ (
/`''丶、 , - /^l
0836デフォルトの名無しさん
05/02/09 14:04:57お前の目がゴミしか通さないフィルターだから
0837デフォルトの名無しさん
05/02/09 14:10:040838デフォルトの名無しさん
05/02/09 14:11:38自作自演乙
0839829
05/02/09 17:47:08一部訂正です。anonymousログインしたあとデータ転送待ちでタイムアウト
してしまいます。
150 Opening BINARY mode data connection for /index.html.ja
までは来てます。
>>832
FtpClient.exe -uftp://servername/filename -mget -ukftp:[email protected]
こちらも同様でした。
0840デフォルトの名無しさん
05/02/10 20:21:26な質問です。
サーバをつくる際に
socket -> bind -> listen -> accept -> read
という段階を踏みますが、HTTPやSMTPでは通信の区切りを
CRLFとしますよね。
通常、このCRLFの検出はreadで受信データを1バイトずつ
読み込むこんで自分で判定するのでしょうか?
それとも高水準入出力のfgetsとか使うのでしょうか?
はたまた他にすごく良い方法があるのでしょうか?
申し訳ございませんが教えていただきたく存じます。
0841デフォルトの名無しさん
05/02/10 20:35:47いいと思うよ。
0842デフォルトの名無しさん
05/02/10 20:39:15>readで受信データを1バイトずつ
は最悪。>>1のFAQも読んどけ。
0843デフォルトの名無しさん
05/02/10 20:49:21ありがとうございます。
readでバッファをとる場合、readの返値が0の時がそのストリームの
終りと判断すべきなのでしょうか?
これが0になることってあるんでしょうか?
0844デフォルトの名無しさん
05/02/10 21:01:130845デフォルトの名無しさん
05/02/10 21:08:05ありがとうございます。telnetクライアントで試すと、いつまでたってもサーバの
readの返り値が0にならないのですが、、、どうゆうふうにすればよいのでしょうか?
0846デフォルトの名無しさん
05/02/10 21:12:46>readでバッファをとる場合、readの返値が0の時がそのストリームの
>終りと判断すべきなのでしょうか?
その通りです。ストリームが閉じられる前に、
「読み取れるデータがない」等の理由で0になるということはありません。
0847845
05/02/10 21:15:26それともソケットをクローズしたときでしょうか?
0848デフォルトの名無しさん
05/02/10 21:17:46あまり調子にのるなよ
0849デフォルトの名無しさん
05/02/10 21:19:09close とたとき、shutdown でクライアントからの方向をshutdownしたとき、です。
一般にTCPプロトコルは、何らかの上位プロトコルと供に用いられます。
データ区切り等は上位プロトコルで規定されます(cr lf等)。
0851デフォルトの名無しさん
05/02/13 18:33:57新規に接続があったかどうかを調べるにはどうしたらいいのでしょうか。
selectでできますか?
0852デフォルトの名無しさん
05/02/13 18:38:35作ってるならわかるだろ
0853デフォルトの名無しさん
05/02/13 18:51:47しかし世の中には理論で割り切れないこともたくさんあるんです。
0854デフォルトの名無しさん
05/02/13 21:55:110855デフォルトの名無しさん
05/02/15 04:31:17// 以下のどちらかをメインの関数から引数をわたしてCreateThreadする。
DWORD WINAPI ThreadExampleA(LPVOID lpVoid)
{
CLIENT *client;
client = (CLIENT *)lpVoid;
// この場合、static宣言されてないclientはこのスレッドから別の関数を呼び出して
// そこから戻ってきた時おかしな値になることはありますか?
}
DWORD WINAPI ThreadExampleB(CLIENT *client)
{
// これは邪道ですか?引数はLPVOIDにすべきですか?
}
0856デフォルトの名無しさん
05/02/15 06:32:05スレ違い。ここはネットワークプログラミングのスレだぞ。
まあネットワークのプログラムにスレッドはかかせないが。
CreateThreadの引数に入れる関数は、あくまでエントリポイントでしかない。
エントリ関数の中で呼んだ関数は、そのスレッドに属することになる。
つまりExampleAでclientにstaticをつける必要はない。
Bは別に邪道というわけではなく、ごく一般的な書き方。それでいい。
0857855
05/02/15 07:20:22「マルチスレッドプログラミング相談室 その3」
に書き込むのを誤爆しました;
>>856
どうもありがとうございます。
1回目のExampleAが終了していない間に2台目のクライアントが接続してきて、
2回目のExampleAがCreateされたときstatic宣言していると一回目のclient->hogeが上書きされてしまい
staticをはずすと回避できたので、、、メモリが同じなのかと思いました。
CreateThreadからの引数はCLIENT型の&client[c]みたいにしていました。
Bで行こうと思います。
0858デフォルトの名無しさん
05/02/17 20:00:06lzh形式の圧縮ファイルをアップロードしているのですが、タイムアウト
になってしまいます。
他のFTPサーバ(IIS)には問題なくアップロードできています。
また、FFFTPを使用して同じファイルをアップロードするとうまくいきます。
FFFTPではできているので、何か考慮が足りないのだと思うのですが、
どんなことが考えられるのでしょうか?
0859デフォルトの名無しさん
05/02/17 21:34:080860デフォルトの名無しさん
05/02/17 22:45:390861デフォルトの名無しさん
05/02/18 23:48:21TCP/IPはUDP/IPと比べて信頼性があり、送信された順番にパケットが到着することが保証されているとのことですが、
ポート番号が違った場合どうなるのでしょうか?
例えば
・TCPポート1を使用してデータAを送信
・TCPポート2を使用してデータBを送信
ということを行った場合、必ずA,Bの順序で到着するのでしょうか?
とりあえず実験してみた結果、順序どおりだったのですが、実際はどうなんでしょうか。
0862デフォルトの名無しさん
05/02/18 23:56:312げっと争いみたいなモンだ。
0863デフォルトの名無しさん
05/02/19 01:16:18というか、到着した場合、送信された順番に到着したことが保障される。ということですな。
>ということを行った場合、必ずA,Bの順序で到着するのでしょうか?
ポートが違えばソケットも違うから、そんなことは保証されてないと思うけど。
0864デフォルトの名無しさん
05/02/19 01:22:36車の運転を習いたいって感じの質問だな。
0865デフォルトの名無しさん
05/02/19 01:54:09具体的に書けば、ポート1のデータが何処かでドロップされ、再送信されている間にドロップの
起こらなかったポート2のデータが先に届くという場合がありえる。
0866デフォルトの名無しさん
05/02/19 01:58:030867861
05/02/19 02:02:37貴重な情報ありがとうございます。
実験ではたまたまうまくいってただけなんですね。
もう少しTCPとUDPについて勉強してみようと思います。
有難う御座いました。
0868デフォルトの名無しさん
05/02/19 16:51:370869デフォルトの名無しさん
05/02/19 17:40:280870デフォルトの名無しさん
05/02/19 18:51:240871デフォルトの名無しさん
05/02/19 18:53:090872デフォルトの名無しさん
05/02/19 21:27:270873デフォルトの名無しさん
05/02/20 06:06:550874デフォルトの名無しさん
05/02/20 07:16:58C言語を使っています。
0875デフォルトの名無しさん
05/02/20 07:46:500876デフォルトの名無しさん
05/02/20 09:03:060877874
05/02/20 09:53:07クライアントが異常終了したときの処理も教えてください。
0878デフォルトの名無しさん
05/02/20 09:58:400879デフォルトの名無しさん
05/02/20 10:48:56select() & recv()してるならイベントが来るのでそこで分かる。
してないなら次にsend()なりrecv()なりした時に分かる。
もちろん戻り値やerrno(WSAGetLastError())をちゃんと見て
いればだが。
0880デフォルトの名無しさん
05/02/20 11:01:54応答無し/エラーなら終了してる。
0881デフォルトの名無しさん
05/02/20 11:25:09クライアントが突如ダウンしたり、
ネットワークから切り放されたことも知りたい?
そういうのを知ることはできないので、(エスパーじゃないので当たり前)
普通タイムアウト処理でクライアント無反応処理の全てを賄います。
0882デフォルトの名無しさん
05/02/20 11:26:46SO_KEEPALIVEで時間をsetsockopt(2)します。
socket FAQもちゃんと読んでね。
0883874
05/02/20 11:30:23クライアントから閉じた時は、select()の後のrecv()が0を返すようです。
クライアントが落ちたときの処理は、
一定時間でpingを送ってpongが帰ってこずタイムアウトになったら
落ちたと判断することにしました。
0884デフォルトの名無しさん
05/02/20 12:12:49>落ちたと判断することにしました。
これはまずい。
0885デフォルトの名無しさん
05/02/20 12:44:140886デフォルトの名無しさん
05/02/20 12:45:30socket API上で分かるんだけどな。(recvのerror等)
0887デフォルトの名無しさん
05/02/20 12:47:000888デフォルトの名無しさん
05/02/20 14:56:19まずくないときもある
環境限定ならそれもいいさ
0889デフォルトの名無しさん
05/02/20 16:33:14一般向けアプリケーションなら論外だけど。
0890デフォルトの名無しさん
05/02/20 18:42:58WinSockではどんな風に実現できますか?
NATリゾルバ=IPマスカレード?
0891デフォルトの名無しさん
05/02/20 18:44:300892デフォルトの名無しさん
05/02/20 18:59:15そんなもんは要らん。
0893デフォルトの名無しさん
05/02/20 19:01:010894デフォルトの名無しさん
05/02/20 19:16:22自分のグローバルIPをどこか適当なCGIで取ってもLAN組んでたら
行く先がないのでは?もっと単純な方法があるのでしょうか?
0895デフォルトの名無しさん
05/02/20 19:30:05何の問題もない。せっかくNATが変換してくれてるんだか
ら、NATに万事任せれば?
0896デフォルトの名無しさん
05/02/20 19:37:37LAN-A内のPC-Aでサーバ。LAN-B内のPC-Bでクライアント。この間(インテーネッツ)で通信をしたいとする。
PC-BからPC-Aに繋げる時にPC-Aを識別するにはどうしたらいいんでしょうか?
私はPC-AのグローバルIPとLAN-A内のローカルアドレスが必要だと思っちゃうのですが・・・
0897デフォルトの名無しさん
05/02/20 19:39:190898デフォルトの名無しさん
05/02/20 19:54:45>>896
LAN-Aのファイアウォールに穴を開ければ問題ない。
> 私はPC-AのグローバルIPとLAN-A内のローカルアドレスが必要だと
NATを使ってるってことはPC-AにはグローバルIPなんてついて
なくてプライベートIPなんじゃないのか?
だとすると、PC-Bが必要なのはLAN-Aのファイアウォールの
グローバルアドレスと、ファイアウォールに開けた穴のポート番号
だけ。
0899デフォルトの名無しさん
05/02/20 20:02:09普通にconnect()関数にグローバルIPとポート番号入れて
使えばよいのですか?
0900デフォルトの名無しさん
05/02/20 20:11:37あとはNATがよろしくやってくれる。
つーか、NATって network address translation なんだから
アドレス変換してくれなかったらNATじゃないしー。
0901デフォルトの名無しさん
05/02/20 20:14:26有難う五山下
0902858
05/02/21 17:27:13レス頂いたのに返事が遅くなって申し訳ないです。
>>860
ずばり、アドバイスの逆でした。
passiveが不可でactiveにしたら出来ました。
まさかpassiveが不可とは盲点でした・・・。
おかげで解決できました。ありがとうございます。
>>859
良いツールを教えて頂いてありがとうございます。
似たようなのは使ったことがあったのですが、
こっちの方が自分には使いやすいです。
結局、知識不足と自分の頭が固いのが根本の原因・・・もっと勉強します!
0903デフォルトの名無しさん
05/02/22 20:06:300904デフォルトの名無しさん
05/02/22 21:43:22このHPをサンプルに使って、POST処理を作ってみたのですが、
POSTのボディ部をPHPの受信側が受け取りません。
パケットキャプチャしてみた結果では、ボディ部はちゃんと
送信していました。
同様にPHPで作ったPGでPOSTしてみて、
結果ではうまく値がわたったので、受信側はうまく動いていると思います。
どうぞよろしくお願い致します。
0905デフォルトの名無しさん
05/02/22 21:49:46WebProg板でやれ
0906デフォルトの名無しさん
05/02/22 21:52:06WebProg板でもないような
0907デフォルトの名無しさん
05/02/22 22:02:59Content-Typeをapplicaiton/x-www-form-urlencodedに設定したらどうだろう
むかしそれでPHPがPOSTを受け取らなかったことがある
(今はしらんが)
0908904
05/02/22 22:52:14>>906
言われてみるとソケットはつかってませんね。
すみません。
>>907
WinInetでは、Content-Typeは自動で設定されてるっぽいです。
手動で書く方法探します。
ありがとうございました。
0909904
05/02/23 13:00:33教えてくださった方法でPOSTできました!
ありがとうございます
0910デフォルトの名無しさん
05/02/23 19:42:49http://www112.sakura.ne.jp/~kaientai-project/creategame.htm
0911デフォルトの名無しさん
05/02/23 20:52:39結構前に何処かのスレでそれ見たけど、急募ってのが気にいらねぇ。
個人の集まりでやろうってのに、技術系すべていないからって急募なんて書くな。
参加してみようなんて思ったが最後、
お前らの無茶な注文を、無茶な期限で要求されるんだろ?どうせ。
0912デフォルトの名無しさん
05/02/23 21:59:52つーか、基本設計すらまともに出来てない時点で急募なんてありえない
0913デフォルトの名無しさん
05/02/23 22:09:32どっかのMMO開発コミュニティのサイトに出入りしてた奴みたい。
で、>>910のリーダーは作れ作れ!!ってタイプの人で、もめて抜けた模様。
んでもって対抗意識燃やしてサイトを立ち上げたってことらしい。
まぁ、技術者は関わらんほうが身のためやね。
0914デフォルトの名無しさん
05/02/23 22:16:39もろにマルチだよ。ココ(↓)が発信源。
ttp://game10.2ch.net/test/read.cgi/mmominor/1108379282/
マトモな人間が1人も来ないから、焦ってるんだろ。
0915デフォルトの名無しさん
05/02/23 22:45:410916デフォルトの名無しさん
05/02/23 22:54:340917デフォルトの名無しさん
05/02/24 00:44:040918デフォルトの名無しさん
05/02/24 01:19:380919デフォルトの名無しさん
05/02/24 09:28:18そのときまで住んでいると思ってたが
発見時はすでに過去形だった。
0920デフォルトの名無しさん
05/02/24 10:53:020921デフォルトの名無しさん
05/02/24 11:50:570922デフォルトの名無しさん
05/02/24 11:52:050923デフォルトの名無しさん
05/02/24 12:01:36そんな事言われると見たくなるじゃん・・・・。
0924デフォルトの名無しさん
05/02/24 13:25:39何だったのかキニナル
0925デフォルトの名無しさん
05/02/24 13:42:34ttp://www.tiduru.sytes.net/img-box/img20040727015957.jpg
よろしくお願いしますた〜
39 名前:耳 ◆vGDY2306tM [sage] 投稿日:05/02/21(月) 14:19:46 ID:uD2cFR3+
>>37
ダークロリータへ飛ぶので激しく有害です
踏まないようにして下さい
勇気が無くて見れない画像解説スレinフラ板Part143
http://pc5.2ch.net/test/read.cgi/swf/1108909968/37-39
0926デフォルトの名無しさん
05/02/25 01:24:52ここで話題になってたが
http://pc5.2ch.net/test/read.cgi/tech/1108172110/
対策してないやつはヤバイぞ
0927デフォルトの名無しさん
05/02/25 07:39:57最終的にはそれらのMACアドレスがほしいのです。
0928デフォルトの名無しさん
05/02/25 07:45:26知っています。これで満足ですか?
0929デフォルトの名無しさん
05/02/25 07:47:10その質問でお前が知りたい環境がわかる人がいるとおもうのか?
0930デフォルトの名無しさん
05/02/25 07:59:29http://discypus.jp/wiki/?Windows%2FNetwork%20Programming#content_1_3
> MACアドレスなどの取得
> GetAdaptersInfo
0931デフォルトの名無しさん
05/02/25 08:29:02>>930 どうもでした。
0932デフォルトの名無しさん
05/02/25 14:22:57つーことか。
0933デフォルトの名無しさん
05/02/25 14:33:280934デフォルトの名無しさん
05/02/25 19:55:230935デフォルトの名無しさん
05/02/25 19:56:29ただ、プログラミングの質問は殆ど消えるけどなw
どちらかと言うと概念とかのネットワーク技術系だなw
0936デフォルトの名無しさん
05/02/25 20:00:51いっぱいあると思うけど。
つい最近でたものだと、PHPはPOST受けるときにContent-Typeの選り好みが厳しいという話とか、
TCPのパケット(データ)順の保証はストリーム単位だという話とか、
同時接続数が異様に多い場合には接続毎にスレッドを立てるのは好ましくないという話とか。
0937デフォルトの名無しさん
05/02/25 21:36:32何もプログラミング限定の話じゃないような・・・。
0938デフォルトの名無しさん
05/02/26 01:40:41ネットワークプログラミング相談室 Port12
0939デフォルトの名無しさん
05/02/26 01:52:09APIの使い方、Cそのものの使い方とは外れたところの議論も、
ネットワークプログラミングの話題だな。
0940デフォルトの名無しさん
05/02/27 14:41:15送信バッファの最大サイズではなく送信バッファにたまってるデータのサイズです。
0941デフォルトの名無しさん
05/02/27 15:13:080942デフォルトの名無しさん
05/02/27 15:42:13送信バッファへの送信サイズではなくデータリンク層への送信のサイズです。
0943デフォルトの名無しさん
05/02/27 19:28:250944デフォルトの名無しさん
05/03/01 09:27:440945デフォルトの名無しさん
05/03/01 15:42:46PC全体が回線から切断される場合としてどんな場合が考えられますか?
recvした後、エラーがあったことを確認した時点で、
既に切断されているんですが
0946デフォルトの名無しさん
05/03/01 15:50:15「PC全体が回線から切断され」た瞬間に、recvがエラーで返るんじゃないの?
0947デフォルトの名無しさん
05/03/01 15:52:26ハードを変えてみるとか原因究明してみては
0948945
05/03/01 15:55:13ありがとうございました。
0949デフォルトの名無しさん
05/03/01 16:19:12使っているOSの方面で調べるのもいいかも。
たとえばUNIXの一派は、IPアドレスが重複しているのを見つけると、
「PC全体が回線から切断」します。インターフェースが"down"するから。
0950デフォルトの名無しさん
05/03/01 21:21:20Linking...
main.obj : error LNK2001: unresolved external symbol "int __cdecl DoWinsock(char const *,int)" (?DoWinsock@@YAHPBDH@Z)
Debug/SimpleNetwork.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
SimpleNetwork.exe - 2 error(s), 0 warning(s)
wsock32.libとwinsock.libを追加してるのこのメッセージが出ます。
よろしければ解決方法をお教え下さい。m(__)m
0951デフォルトの名無しさん
05/03/01 21:49:07っつーかスレ違い
0952デフォルトの名無しさん
05/03/01 22:00:020953デフォルトの名無しさん
05/03/01 22:46:02次スレの時間です。
0954デフォルトの名無しさん
05/03/02 03:41:06釣られなければ。
0955デフォルトの名無しさん
05/03/02 08:08:31式はどうなるのでしょうか?
dwInOctets
dwInUcastPkts
dwInNUcastPkts
は表示できるのですが、Octetsは通信してない時も値が入ってますし・・
どうかよろしくお願いします。
0956デフォルトの名無しさん
05/03/02 08:23:52最近1秒間の転送量がわかるべ。
つうか、WindowsならWindowsだと書け。
0957デフォルトの名無しさん
05/03/02 11:24:20の名前でWindowsってわかるだろ?
こういうのを自明っていうんだが。
0958デフォルトの名無しさん
05/03/02 11:27:56そんなこといったら、dwInOctets の差分取れやってのも自明だし笑。
0959デフォルトの名無しさん
05/03/02 11:53:500960デフォルトの名無しさん
05/03/02 13:17:18質問者としては最低だな。
0961デフォルトの名無しさん
05/03/02 13:49:05んだんだ。
0962デフォルトの名無しさん
05/03/02 14:48:230963945
05/03/02 17:52:52詳しい状況を書くので、どなたか原因に心当たりはございませんか?
[現象]
Winsockを使ってしばらくデータを転送していると、
PCごとネットワークから切断される。
あるときselectの戻り値が0になるので、
Errorを調べるとLastErrorは0になっているので、
通常のタイムアウトが起こっているようです。
>>946 >>947 がご指摘の通り、まずPCがネットワークから切断されて、
その結果selectがタイムアウトを起こしているように思えます。
切断されるまでは、ループ内で延々ReadFileを使ってソケットからデータを読み出してます。
(recvを使った場合も同じ現象が起こります。)
ネットワーク切断時、相手からの送信は届いているのに、
こちらからは送信できない状態がしばらくの間続くみたいです。
でも、shutdownやclosesocketはその時点では使われていないはずです。
ネットワークのプロパティから、ローカルエリアネットワークを一度無効にして、
再度有効にしようとすると、'接続に失敗しました。'というメッセージが表示されます。
[環境]
OS - Windows XP Professional SP1
開発環境 - Delphi 6 Professional
PCはルータ内です。
プログラムを起動していたPCが切断されても、LAN内の他のPCは切断されません。
以上、どなたかご教授ください。
0964デフォルトの名無しさん
05/03/02 18:12:120965デフォルトの名無しさん
05/03/02 18:20:570966デフォルトの名無しさん
05/03/02 20:00:18書いてあるじゃん。
0967デフォルトの名無しさん
05/03/02 20:06:500969デフォルトの名無しさん
05/03/02 20:43:580970デフォルトの名無しさん
05/03/02 22:06:38あのね、それは完全にNICに繋がってるケーブルの断線不良の症状。
接点復活剤とか使ってみ。
0971963
05/03/03 00:54:37どうやらNICの問題のようなので、後日新しいものを購入して実験します。
マザーボード上のNICを使っているため、交換はできませんでしたが、
別のPCから実験したところ、通常通り当該接続のみ切断されました。
>>968 >>970 どうもありがとうございました。
0972デフォルトの名無しさん
05/03/03 02:41:47俺は最近スレッドを立てたから無理。
0973デフォルトの名無しさん
05/03/03 07:24:49>TCP/IPによるネットワーク構築〈Vol.3〉―クライアント‐サーバプログラミングとアプリケーション
>http://www.amazon.co.jp/exec/obidos/ASIN/4320028007/
は
TCP/IPによるネットワーク構築〈Vol.3〉
Linux/POSIXソケットバージョン―クライアントサーバプログラミングとアプリケーション
http://www.amazon.co.jp/exec/obidos/ASIN/4320120841/
の方がよくない?
0974デフォルトの名無しさん
05/03/03 07:33:210975デフォルトの名無しさん
05/03/03 07:41:07別に問題無いと思われ
受信側の解釈が問題なだけで
0976デフォルトの名無しさん
05/03/03 07:44:580977デフォルトの名無しさん
05/03/03 08:26:26エンディアンは決まってるから違わない
0978デフォルトの名無しさん
05/03/03 08:47:23ということは、数字の"1"をUnicodeで表現した場合、
プラットホームに依らず、「0x31 0x00」の順番ってこと?
0979デフォルトの名無しさん
05/03/03 09:03:38違う
0980デフォルトの名無しさん
05/03/03 09:08:58TCP/IPでおきまりのビックエンディアンにあわせるな
0981デフォルトの名無しさん
05/03/03 09:10:36いい加減、本当のこと教えてもらえないだろうか?
0982デフォルトの名無しさん
05/03/03 09:49:14もう少し待ってくれ。
0983デフォルトの名無しさん
05/03/03 10:33:370984デフォルトの名無しさん
05/03/03 10:40:13http://pc5.2ch.net/test/read.cgi/tech/1109793931/
0985デフォルトの名無しさん
05/03/03 11:04:33Unicodeは文字セットであって符号化方式ではない。
符号化するんなら UTF-8 なり UTF-16 + BOM なり UTF-16LE なり
UTF-16BE なり決めればプラットフォーム依存なんてしない。
「バッファをそのまま送信」したいんなら、「このプロトコルでは
UTF-16LE にします」とでも決めればよろしい。
0986デフォルトの名無しさん
05/03/03 11:16:520987デフォルトの名無しさん
05/03/03 11:28:540988デフォルトの名無しさん
05/03/03 11:29:32中途半端にちゃんと動くリトルエンディアン。
ビッグエンディアンだと、かなり手を入れないと明らかにおかしな動きをするので
プログラマが移植に真剣に取り組む効果が期待できると思う。
ビッグエンディアンの方が潜在バグが消滅するまでの時間が短くなる希ガス。
0989デフォルトの名無しさん
05/03/03 11:37:16氏ね。
>>963
プログラミング関係ないんじゃないの?
その他アプリも接続が中断するんでしょ?
0990デフォルトの名無しさん
05/03/03 12:48:24氏ね。
0991デフォルトの名無しさん
05/03/03 13:54:46なければ、どうでもいいんじゃないの?
インターネット標準を目指すのなら論外なのでやめるべき。
Informational な RFC を目指す場合も、まあ好まれないのは
間違いない。
ネットワークの勉強をする場合も、OS/機器独立な表現の仕方
くらいは知っておくべき。分かってて状況に応じて使うのなら
問題ないが。
0993デフォルトの名無しさん
05/03/03 21:04:370994デフォルトの名無しさん
05/03/03 22:24:220995デフォルトの名無しさん
05/03/03 23:21:590996デフォルトの名無しさん
05/03/03 23:22:300997デフォルトの名無しさん
05/03/03 23:23:590998デフォルトの名無しさん
05/03/03 23:25:080999デフォルトの名無しさん
05/03/03 23:25:471000デフォルトの名無しさん
05/03/03 23:25:5710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。