68user's page 掲示板

Prev< No. 3776〜3789> Next  [最新発言に戻る] [過去ログ一覧]
No. 3776 # yoko 2004/06/14 (月) 15:22:44
Solaris(UNIX)でフォルダの削除が行えません。
rmdir フォルダ名のコマンドでは「ディレクトリが存在しません。」
のメッセージがでます。CPコマンドで同じフォルダを同じ場所にコピーすると
同じ名前のファルダが2つできてしまいます。
このフォルダの消し方をどなたか教えていただけないでしょうか。

No. 3777 # TSURU 2004/06/14 (月) 17:21:18
>>3776 yoko

こんばんは。

rm -r <ディレクトリ名>

で削除できませんか?

No. 3778 # den 2004/06/14 (月) 21:42:32
ソースを載せます。

//***************************************************************
// From the book "Win32 System Services: The Heart of Windows 95
// and Windows NT"
// by Marshall Brain
// Published by Prentice Hall
//
// Copyright 1995, by Prentice Hall.
//
// This code implements a TCP sender.
//***************************************************************

// ssipsend.cpp

#include <windows.h>
#include <iostream.h>
#include <winsock.h>

#define NO_FLAGS_SET 0

#define PORT (u_short) 8080
#define DEST_IP_ADDR "127.0.0.1"

#define MAXBUFLEN 256

INT main(VOID)
{
    WSADATA Data;
    SOCKADDR_IN destSockAddr;
    SOCKET destSocket;
    unsigned long destAddr;
    int status;
    int numsnt;
    char toSendtxt[3][256];

    int numrcv;
    char buffer[MAXBUFLEN];

    strcpy( toSendtxt[0], "GET http://localhost:8080/example00/HitTime?userid=1207&date=20004/06/11%2008:30:00 HTTP/1.1\r\n" );
    strcpy( toSendtxt[1], "Host: localhost:8080\r\n" );
    strcpy( toSendtxt[2], "\r\n" );

    /* initialize the Windows Socket DLL */
    status=WSAStartup(MAKEWORD(1, 1), &Data);
    if (status != 0)
        cerr << "ERROR: WSAStartup unsuccessful"
            << endl;

    /* convert IP address into in_addr form */
    destAddr=inet_addr(DEST_IP_ADDR);
    /* copy destAddr into sockaddr_in structure */
    memcpy(&destSockAddr.sin_addr,
        &destAddr, sizeof(destAddr));
    /* specify the port portion of the address */
    destSockAddr.sin_port=htons(PORT);
    /* specify the address family as Internet */
    destSockAddr.sin_family=AF_INET;

    /* create a socket */
    destSocket=socket(AF_INET, SOCK_STREAM, 0);
    if (destSocket == INVALID_SOCKET)
    {
        cerr << "ERROR: socket unsuccessful" << endl;
        status=WSACleanup();
        if (status == SOCKET_ERROR)
            cerr << "ERROR: WSACleanup unsuccessful"
                << endl;
        return(1);
    }

    cout << "Trying to connect to IP Address: "
        << DEST_IP_ADDR << endl;

    /* connect to the server */
    status=connect(destSocket,
        (LPSOCKADDR) &destSockAddr,
        sizeof(destSockAddr));
    if (status == SOCKET_ERROR)
    {
        cerr << "ERROR: connect unsuccessful" << endl;
        status=closesocket(destSocket);
        if (status == SOCKET_ERROR)
            cerr << "ERROR: closesocket unsuccessful"
                << endl;
        status=WSACleanup();
        if (status == SOCKET_ERROR)
            cerr << "ERROR: WSACleanup unsuccessful"
                << endl;
        return(1);
    }

    cout << "Connected..." << endl;

    int idx = 0;
    while(1)
    {
    Sleep(1000);
        cout << "Sending..." << endl;
        numsnt=send(destSocket, toSendtxt[idx],
            strlen(toSendtxt[idx]) + 1, NO_FLAGS_SET);
        if (numsnt != (int)strlen(toSendtxt[idx]) + 1)
        {
            cout << "Connection terminated" << endl;
            status=closesocket(destSocket);
            if (status == SOCKET_ERROR)
                cerr << "ERROR: closesocket unsuccessful"
                    << endl;
            status=WSACleanup();
            if (status == SOCKET_ERROR)
                cerr << "ERROR: WSACleanup unsuccessful"
                    << endl;
            return(1);
        }
    idx++;
    if(idx>2){
        break;
    }

    /* Wait before sending the message again */
    //Sleep(4800);
    } /* while */

    return 0;
}

それほど難しいことはしていないはずなのですが...
よろしくお願いします。

No. 3779 # TSURU 2004/06/14 (月) 23:20:59
>> 3771
Servletって、JavaのServletのことですよね?
なぜ、わざわざCのプログラムからServletを起動する必要があるのですか?
そこが分かりません。

No. 3780 # とーりすがり 2004/06/15 (火) 00:03:33
>>3776 yoko
ディレクトリを作成した時にディレクトリ名にスペースとか
コントロールコード(^hとか)が入ってしまったってことはないですか?

とりあえず そのディレクトリ上位の階層でls -l > hoge.lst
としてvi hoge.lst を表示もしくはod -x hoge.lstあたりで
確認されてみてはいかがでしょうか?
外してしたらスミマセン
  

No. 3781 # den 2004/06/15 (火) 08:41:41
>> 3779 TSURU

なぜ、わざわざといわれるとどう答えていいのかわからないのですが。
サーブレットは、起動されるとデータベースに時刻を登録するようにできています。
それでタイムカードのように出社時間と退社時間を記録してゆこうとしているのです。
そのときにわざわざブラウザを立ち上げてフォームのボタンを押してサーブレットを
起動するのは面倒らしいので、スタートアップにEXEをと登録して、
パソコンが起動するとサーブレットを呼び出すようにしようとしています。

という回答でよいでしょうか。
よろしくお願いします。

No. 3782 # den 2004/06/15 (火) 08:44:36
>> 3779 TSURU

ちなみになぜ、Cでやろうとしているかというと、Java だと各パソコンに
JREをインストールしてやらなければならないかなと思っているので
それが面倒なのでCを使おうとしています。

No. 3783 # 68user 2004/06/15 (火) 11:49:45
>>3775 kiyo
> dateコマンドでは、最大何日前までの日付計算が行えるのでしょうか?
FreeBSD の date は 1900 年まででした。他の OS でも、time_t の仕組みに
のっけているなら、同じでしょうね。てゆーか OS 名くらい書きましょうね。

>>3776 yoko
> Solaris(UNIX)でフォルダの削除が行えません。
ファイルの特定方法もいろいろあるので参考にしてください。
    http://www.jp.freebsd.org/QandA/HTML/1671.html

>>3778 den
> ソースを載せます。
どこでどういうふうにエラーになるんですか? 「うまく起動しません」
とはどういう意味ですか? OS は? ブラウザで該当 URL を見ると正しく
記録されるのですか?

…などという点が情報不足なのですよ。期待した結果と実際の結果を書けと
    http://www.hyuki.com/writing/techask.html
にもあったはずです。

ソースをざっと見た感じでは怪しげなところはないように見えますが、
わたしの手元に Windows 開発環境がなくコンパイルできないので、
どなたかコンパイルして検証できる環境をお持ちの方がいらっしゃい
ましたらよろしくお願いします。

>>3779 TSURU
> なぜ、わざわざCのプログラムからServletを起動する必要があるのですか?
C で HTTP クライアントを作るって話なので、別に変ではないです。

No. 3784 # den 2004/06/15 (火) 13:24:16
OS は、クライアント、サーバともに Windows 2000 Professtional 又は Windows XP Professtional です。
Tomcat は、Tomcat/4.1.27 です。

サーブレットに動作したことがわかるようにコンソールへの出力が組み込んであるので
起動したことは、コンソールを見るとわかるようになっています。

ブラウザでサーブレットの URL をたたいた場合は、ちゃんとコンソールへの
出力がでて、起動していることがわかります。

No. 3785 # den 2004/06/15 (火) 13:30:15
>> 3783

HTTP は、ここで改行しないとダメだとかこういう順番でテキストを
送らないとダメだとかどういうルールがあるのでしょうか?

No. 3786 # den 2004/06/15 (火) 15:18:43
>> 3783

改行を入れるようにしたらレスポンスは返すようになってのですが、
やはりサーブレットは起動しません。

OS は、サーバ、クライアントともに Windows 2000 Professtional か Windows XP Professtional です。
Tomcat は、Apache Tomcat/4.1.27 です。

起動するというのは、コンソールに文字が出力されるということです。

ブラウザで同じことをした場合は、ちゃんと起動します。

No. 3787 # den 2004/06/15 (火) 15:19:42
>> 3783

レスポンスは、

HTTP/1.1 505 HTTP Version Not Supported
Content-Type: text/plain
Date: Tue, 15 Jun 2004 06:24:28 GMT
Server: Apache Coyote/1.0
Connection: close

・・・・・・

です。

No. 3788 # den 2004/06/15 (火) 15:30:52
>> 3783

リクエストの2行目の

strcpy( toSendtxt[1], "Host: localhost:8080" );

を削除したらうまく行きました。
どうもありがとうございました。

No. 3789 # 68user 2004/06/15 (火) 15:31:24
>>3786 den
> 改行を入れるようにしたらレスポンスは返すようになってのですが、
全くついていけません。具体的にどこをどういうふうに修正したんですか?

ふと思いましたが、
>>3778 den
> numsnt=send(destSocket, toSendtxt[idx],
> strlen(toSendtxt[idx]) + 1, NO_FLAGS_SET);
この +1 は不要では?

Prev< No. 3776〜3789> Next  [最新発言に戻る] [過去ログ一覧]