|
>>4837 68user ありがとうございます。 期待した結果が得られました。 |
|
はじめまして。 以下のページを見て質問させていただきます。 http://x68000.q-e-d.net/~68user/net/http-1.html telnet(WindowsXPに標準でついていたものです)で、 % telnet www.cs.gunma-u.ac.jp 80 とコマンドを打っても、コマンドが無効です、と出てしまいます。 ここで詰まってしまって、先へ進めないでいます。 helpを見てみて、openかなと思ったのですが、それでも接続できない状況です。 googleで検索してもみたのですが、要領を得ませんでした・・・ 何か解決法はないでしょうか? プロバイダからは、特別なproxyを使わないと駄目ですとは言われていません。 よろしくお願いします。 |
|
>>4840 まるこ telnet の起動の仕方を勘違いしているように見えます。 スタート > すべてのプログラム > アクセサリ で コマンド プロンプト を起動します。するとウィンドウが開き Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\user> などと表示されるはずです。 ここで telnet www.cs.gunma-u.ac.jp 80 とタイプしてください。 http://x68000.q-e-d.net/~68user/net/win-telnet.html にあるとおりエコーバックはされませんが、 GET / HTTP/1.0(Enter) (Enter) とすると取得した HTML が表示されるはずです。「(Enter)」は XP であれば普通に Enter キー押下でいけると思います。 |
|
はじめまして。 以下のページを参考にさせていただきまして、質問させていただきます。 http://x68000.q-e-d.net/~68user/webcgi/char-code-2.html 以下のように機種依存文字のチェックをさせてみたところ 「丁目」という文字がC3FA CCDCとなり、FACCが90区のチェックに 引っかかってしまいました。 $fradrs = $_POST['adrs']; $check = mb_convert_encoding($fradrs,'EUC-JP'); if (ereg("\x8E[\xA0-\xDF]|[\xAD\xF9\xFA\xFB\xFC][\xA1-\xFE]", $check)) { こういった場合はどのように対処したらよいでしょうか。 よろしくお願いします。 |
|
>>4842 yuki そのページでも紹介していますが、文字単位でマッチさせるために http://www.din.or.jp/~ohzaki/perl.htm#JP_Match という工夫をしています。 PHP であれば mb 系の関数を使えば文字単位で切り出せると思いますが、 いわゆる機種依存文字に対応しているかどうかわからないのでまずは 試してみてください。対応していなければ、上記のようなやり方で 1文字ずつ取り出す必要があるかもしれません。 |
|
>>4843 68user様 ご助言ありがとうございます。 ご案内いただいたページを参考にして以下のように記述したところ 想定通りに動くことを確認できました。 $ascii = '[\x00-\x7F]'; $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]'; $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]'; $fradrs = $_POST['adrs']; $check = mb_convert_encoding($fradrs,'EUC-JP'); if (ereg("^($ascii|$twoBytes|$threeBytes)*(\x8E[\xA0-\xDF]|[\xAD\xF9\xFA\xFB\xFC][\xA1-\xFE])", $check)) { echo "マッチしました。\n"; mb系は私の未熟さゆえかうまく動作しませんでした…。 68user様、ありがとうございました。 |
|
http://x68000.q-e-d.net/~68user/unix/pickup?freebsd-update freebsd-updateでぐぐると上位に引っかかり、拝見しました。 「あくまで 5.1-STABLEを追っかけている」という記述がありますが、 おっかけている(いた)のは'5.1 security fix branch'(RELENG_5_1)で、 5.1-STABLEというブランチは存在しないです。 また'5-STABLE'も5.1-RELEASEをブランチした直後以外は 5.1相当ではなかったわけなので、やはり5.1-STABLEという記述は 修正されたほうが良いかと思います。 |
|
>>4844 yuki 何度も申し訳ありません。 4844の記述ではうまく動かないですね…。 機種依存文字が文頭にある場合のみ動作して 2文字目以降にある場合にはマッチしてくれないです。 正規表現についてもう少し勉強してきます。 |
|
>>4846 yuki ダメですかねぇ? あっているような気がしますが。 $_POST['adrs']・$check のデータを明示いただければ何かしら回答できるかもしれません。 >>4845 2323 よく理解していないので確認させていただきたいのですが、 「あくまで 5.1-STABLE を追っかけているに過ぎない」 を 「あくまで '5.1 security fix branch' (RELENG_5_1) を追っかけているに過ぎない」 とすれば正確な表現と言えるでしょうか。 |
|
はじめまして。 突然ですが、ご教授ください。 私は今、大学4年生で卒業研究をしているのですが、ネットワークプログラムを作る必要が出てきてしまいました。 ですが、私はプログラミングは全くの初心者で、どの言語を使えば良いのか、何から始めればいいのかもよく分かりません。 どなたかアドバイスや、参考となりそうなプログラムやサイトを教えて頂けませんか? OSはKNOPPIXで、アドホックモード(OLSR)での動画の転送をしたいです。 転送さえできればいいとのことなので、プログラム自体は簡単なものでいいようです。 場違いな質問かもしれませんがよろしくお願いいたします。 |
|
>>4848 yino 残念ながら聞いた事もないOSですので、お力になれません。 ただ、この様な場合、ひたすら検索サイトでキーワードを入れて検索してみてはいかがですか? 就職しても、この辺りは変わりません。 まずは、片っ端から検索して自分の目的としている情報が載っているサイトを探してみましょう。 |
|
>>4849 バンガード OLSR はプロトコルのようです。 >>4848 yino わたしなら 1. まわりに言語の有識者がいるか 2. その言語向けのネットワークプログラミング関連の書籍が出版されているか 3. ネットワークプログラミング向きか 4. プログラミング初心者が扱いやすい言語か という観点で考えます。 1 は、まわりを見渡してください (Java が多いのではないかと想像しますが)。 これが最重要だと思います。 2 は、Java が一番、次点が Perl でしょうか。PHP・Ruby はこの点は弱い。 3 は、本質的にはどの言語でも同じでしょうが、PHP などは無駄にハマりやすそうな 気がします。 4 は、まぁ Java ではないかと。 個人的には、Java がイチオシ、次点が Perl です (自分が書くなら Perl か Ruby)。 |
|
>>4850 バンガードさん、 >>4849 68userさん ありがとうございました。 とりあえずは周りの人から話を聞いてみたいと思います。 あとはJavaの本を読んでいきたいと思います。 また壁にあたったときはここに来ると思いますので、よろしくお願いします。 |
|
はじめまして。 いきなりですが教えてほしいことがあります。 大学の課題でサーバの存在するマシンのカレントディレクトリにおけるファ イル一覧を表示する。 <LIST>と打ち込むとファイルの一覧を表示する <GET ファイル名>打ち込むと、ファイルの内容を表示する <PUT ファイル名>でファイルをアップロードする。 <QUIT>と打ち込むとサービス終了。と言うプログラムを作っていたのですが うまく実行できません。どこが間違っているか教えていただけませんか。 #include <netdb.h> #include <stdio.h> #include <fcntl.h> #define BUFMAX 45 #define PORT_NO 10092 #define Err(x) {fprintf(stderr,"server- ");perror(x); exit(0);} static char rmsg[10], smsg[BUFMAX]; static int sofd, nsofd; static struct sockaddr_in sv_addr, cl_addr; static struct hostent *shost; static char shostname[100]; int msgpro(void); int main(int argc, char **argv) { int cadlen; DIR *dirHandle; struct dirent *dirEntry; dirHandle=opendir("."); if(dirHandle){ while(0!=(dirEntry=readdir(dirHandle))){ puts(dirEntry->d_name); } closedir(dirHandle); } sofd = socket(AF_INET, SOCK_STREAM, 0); if(sofd < 0) Err("socket"); if(gethostname(shostname, sizeof(shostname)) < 0) Err("gethostname"); shost = gethostbyname(shostname); if(shost == NULL) Err("gethostbyname"); bzero((char *)&sv_addr, sizeof(sv_addr)); sv_addr.sin_family = AF_INET; sv_addr.sin_port = htons(PORT_NO); memcpy((char *)&sv_addr.sin_addr, (char *)shost -> h_addr, shost -> h_length); if (bind(sofd,(struct sockaddr *)&sv_addr, sizeof(sv_addr)) < 0) Err("bind"); if(listen(sofd, 1) == -1) Err("listen"); while(1){ cadlen = sizeof(cl_addr); if((nsofd = accept(sofd, (struct sockaddr *)&cl_addr, &cadlen)) <0) Err("accept"); if(fork() == 0) if(msgpro()==-1){ close(nsofd); printf("END SERVER\n"); if(shutdown(nsofd, 2) < 0) Err("shutdown"); close(nsofd); exit(1); } close(nsofd); } } int msgpro(void) { int cc, cadlen,nbyte; FILE *fp; DIR *dp; struct dirent *p; char *tmp[100]; int i,f; i=0; close(sofd); if(recv(nsofd, rmsg, 10, 0) < 0){ perror("recv");} printf("%s\n",rmsg); if(strcmp(rmsg,"QUIT:")==0){ return -1;} if(strcmp(rmsg,"LIST:")==0){ printf("LSIT:\n"); dp=opendir("./"); while((p=readdir(dp))!=NULL){ tmp[i]=p->d_name; strcat(tmp[i],"\n"); i++; } closedir(dp); tmp[i]="."; for(f=2;f<=i;f++){ nbyte = strlen(tmp[f]); if(send(nsofd, tmp[f], nbyte, 0) < 0) perror("send"); } }else{ int i; char filename[10]; if(strncmp(rmsg,"GET:",4)==0){ printf("%s\n",rmsg); for(i=4;i<=strlen(rmsg);i++){ filename[i-4]=rmsg[i]; } fp = fopen(filename,"r"); while(fgets(smsg, BUFMAX, fp) != NULL){ nbyte = strlen(smsg); if(send(nsofd, smsg, nbyte, 0) < 0) perror("send"); } fclose(fp); }else{ if(strcmp(rmsg,"QUIT:")==0){ printf("shutdown\n"); return -1; }else{ printf("Command not Fountd.\n"); strcpy(smsg,"Command not Found.\n."); nbyte = strlen(smsg); if(send(nsofd, smsg, nbyte, 0) < 0) perror("send"); } } } if(shutdown(nsofd, 2) < 0) Err("shutdown"); close(nsofd); exit(0); } |
|
>>4852 aki > うまく実行できません。 何をどうしたらどうなるのか明示してください。 |
|
>>68userさん すみません。 実行した後にLIST、GET ファイル名、PUT ファイル名、QUITなど打ち込んでもなにも おきないんです。 |
|
>>4854 aki 提示いただいたプログラムはサーバ側のプログラムであって、 1. サーバを実行する 2. 別途 telnet コマンドなどを用いてクライアント側からサーバにアクセス (telnet localhost 10092 など) 3. そこで LIST などをタイプする というものですが、それは理解した上での質問でしょうか? もし理解していないのであれば、まずはまわりの人に聞くとか、資料を もっと読むなどして概念を理解してからでないと効率が悪いと思います。 プログラム自体については、telnet 上から LIST:(Ctrl-D) などと変な送信の仕方をする必要がありましたが、一応動くようです。 |
|
>>4855 68userさん ありがとうございます。 よく理解できてなかったみたいなのでもう少し友達に聞いてみます |
|
今度大学の課題でマルチスレッドサーバを作成することになったので、 http://x68000.q-e-d.net/~68user/net/echo-4.html を参考にマルチスレッドサーバについて勉強している者です。 そこで、素朴に疑問があるのですが、 このページに書いてある内容は、本当にマルチスレッドなのでしょうか? マルチスレッドというと処理が平行して行われるという認識なのですが、 この実装では多数のソケットからデータが到着したソケットを順次選択して 処理をする、というように見られるのですが・・・。 これはマルチスレッドサーバと呼んでもよろしいのでしょうか? |
|
HTTP1.1でKeepAliveでHTTPSサーバに接続した場合に、サーバからの レスポンスの長さが短い(500バイト以下程度)場合、クライアントが タイムアウトとなりサーバからのレスポンスが読めません。 サーバ・クライアント共にFEDORAを使用しており、クライアントは TCP/IPのソケット、OpemSslを使って作成しています。 対処方法は何かありますでしょうか? |
|
>>4857 aya どうなんでしょうか。以前に同様の指摘があった場合は >>3223 int >>3224 68user >>3226 Netboy >>3227 68user というところで止まっています。その後、わたしの知識は増えていないため、 まだ疑問のままです。 >>4858 masa ソースを提示願います。 なお、本日より数日〜数週間の間、返事がしにくい状況になりそうなので、 ご了承ください。 |
|
>>4859 68user さん 解決しました。 読み込もうとしているバッファサイズが大きすぎたようです。 |
|
remshについて知っている方はご教授願います。 環境:HP-UX 11 今シェルを作成しているのですが、あるAPサーバのシェルの中でremshをして他のDBサーバでミドルのコマンド(HiRDBのスケジューラ) の結果とそのリターン値の標準出力をファイルに吐き出すと言う処理をしています。 $USER_Aでシェルを実行(HOST=DBサーバ) # remsh $HOST -l $USER_B -n ". .profile 2>&- ; \$DIR/bin/HiRDBのコマンド ; echo \$? " > $FILE この場合開発環境ではうまく標準出力の結果をファイルに吐き出せるのですが、 顧客本番環境ではうまくいきません。 結果を見る限り、.profileが読み込めてない、またはミドルのコマンドが読み込めていない、と言った感じです。 ちなみに、DBサーバ側の$USER_Bの.rhostsには[APサーバ $USER_A]が記載されています。 この際remshの後のコマンドが実行されていない原因として疑わしき点を教えていただきたいです。 たとえば.profileに問題ありなど…。 お願いいたします。 |
|
>>4861 toshi7 思いつくのは - remsh 後のカレントディレクトリが異なる - ログイン後の環境変数が異なる - 出力先のパーミッションが異なる - HiRDB のコマンドの場所が異なる - HiRDB のコマンドがエラーとなっている → HiRDB を実行するのではなく、適当な自作プログラムを実行し、 起動されているかどうかログ等に記録する - 標準エラー出力を閉じているので、HiRDB の標準エラー出力への 出力が出力されていない (もしくは write(2) でエラーになるため 途中でこけている) くらいでしょうか。 |
|
>>4862 68user 68userさん ありがとうございます。 調査を進めているところですが、HiRDBのコマンドでエラーになっている可能性が大です。 また、今週or来週中にもremshのテストができる予定ですので、 # remsh $HOST -l $USER_B -n ". .profile 2>&- ; \$DIR/bin/HiRDBのコマンド ; echo \$? " > $FILE 2>&1 で標準エラーを出力してみます。 ちなみにサーバ側の"last | more"の結果を見る限りremsh自体は届いているようでした。 また、テストの結果不明点がありましたら、質問させていただいてもよろしいでしょうか? 宜しくお願いします。 |
|
少しずつですが UNIXの部屋 http://x68000.q-e-d.net/~68user/unix/ の各コンテンツを手始めに、Web 全体のデザインを変更していきます。 もし不具合があれば教えていただければ幸いです。 |
|
68userさま。いつも、初心者に有り難いサンプルをたくさんご提供いただき ありがとうございます。 HttpClientHttpURLConnectionを走らせたところ、ブラウザで見ると日本語の部分 が、文字化けしています。yahooのページを始め、いくつか試したのですが同じ 状態です。化けないようにするにはどうしたら良いのでしょうか? お忙しい中恐縮ですが、どなたかご教示下さい。 |