全然更新しないブログ
HSPメモ帳
ソケットを使用した通信メモ
「ソケットの使用」 クライアント ◆使い方
- ■簡単な流れ
- 1.ソケット通信するのに必要なファイルを読込みます
- 当たり前ですが、一応。 例) #include "hspsock.as"
- 2.DLLの初期化
- ※「HSPSOCK」では必要ありません。 「WSAStartup」関数を使用します。
- 3.ソケットを作成します
- 以下の場合ソケットを作成(3)し、 ポート「80」で「blog.goo.ne.jp」に接続(4)しています。 ソケットID「1234」を利用してデータの送受信が可能になります。 例) sockopen 1234 , "blog.goo.ne.jp" , 80
- 4.接続します
- ※「HSPSOCK」では必要ありません。 「gethostbyname」関数等で、ホスト情報を取得。 3で作成したソケットを使って接続します。 「connect」関数を使用します。
- 5.送信、受信を始めます
- 例) sdim data , 1024 sockput "send" , 1234 //送信 sockget data , 1024 , 1234 //受信
- 6.ソケットを切断します
- 3で作成したソケットを切断します 例) sockclose 1234
- 7.DLLの使用を終了します
- ※「HSPSOCK」では必要ありません。 「WSACleanup」関数を使用します。
※C:WINDOWS¥system32¥drivers¥etc¥servicesの一部 | |||
# Copyright (c) 1993-1999 Microsoft Corp. # This file contains port numbers for well-known services defined by IANA # Format: # service name port number/protocol [aliases...] [#comment] | |||
service name | port | portocol | comment |
ftp-data | 20 | tcp | #FTP, data |
ftp | 21 | tcp | #FTP. control |
telnet | 23 | tcp | |
smtp | 25 | #Simple Mail Transfer Protocol | |
http | 80 | tcp | #World Wide Web |
pop2 | 109 | tcp | #Post Office Protocol-Version2 |
pop3 | 110 | tcp | #Post Office Protocol-Version3 |
ntp | 123 | udp | #Network Time Protocol |
送信するデータ |
GET / http/1.1 リクエスト行 ヘッダ行(複数行可能) (空行) メッセージボディ(POSTメソッドなどで使用) |
受信するデータ |
HTTP/1.1 200 OK レスポンス行 ヘッダ行 (空行) html メッセージボディ |
メソッド | 説明 |
GET | ページを取得 |
HEAD | ヘッダを取得 ファイルサイズや更新日時を取得する場合に使います |
POST | method="POST" を指定したフォームに入力したデータを サーバに転送します |
PUT | ファイルをサーバに送ります |
DELETE | 指定したりソースを削除します |
CONNECT | プロキシサーバを利用してSSL通信する場合に使用します |
ステータスコード | 説明 |
100~199 | 各情報通知 |
200~299 | 正常終了 |
300~399 | リクエスト対象がありません |
400~399 | クライアントのリクエストエラー |
500~599 | サーバーエラー |
実行結果 |
サンプルソースコード |
///////////////////////////////////////////////// //定義 #define SOCKET_ID 1000 #define PORT 80 ///////////////////////////////////////////////// //インクルード #include "hspsock.as" ///////////////////////////////////////////////// //変数 sdim send_data , 1024 sdim recv_data , 1024 sdim inputdata , 1024 sdim string , 1024 ///////////////////////////////////////////////// //ウィンドウ作成 screen 0 , 500 , 200 title "HPデータ読込" pos 0 , 0 : input inputdata , 450 , 20 , 1024 objsize 50 , 20 : pos 450,0 button "読込" , *load pos 0 , 20: mesbox recv_data , 500 , 180 stop ///////////////////////////////////////////////// //サーバからデータ取得 *load tmp=instr(inputdata , 0 , "//") if tmp != -1{ getstr inputdata ,inputdata,tmp+2,'' objprm 0 , inputdata } tmp=instr(inputdata , 0 , "/") string = inputdata if tmp != -1 : string = strmid(inputdata , 0 , tmp) //ソケットの初期化と接続 sockopen SOCKET_ID , string , PORT if stat != 0 : title "error : open" : stop string = "" if tmp==0 : tmp++ : getstr string , inputdata , tmp , '' //リクエスト send_data="" notesel send_data noteadd "GET /"+string+" /http/1.1" , -1 noteadd "" , -1 : noteadd "" , -1 sockput send_data , SOCKET_ID if stat != 0 : title "error : send" : stop //レスポンス sdim string , 10240 repeat -1 title "読み込み中・・・ "+cnt+"回" sockget string , 10240 , SOCKET_ID if (stat=0) & (string = "") : break recv_data+=string await 1 loop objprm 2, recv_data //ソケットを切断 sockclose SOCKET_ID title "読込終了" stop |
コメント ( 0 ) | Trackback ( 0 )
« ウィンドウを透過 | メールの送信方法 » |
コメント |
コメントはありません。 |
コメントを投稿する |