많은 사람들이 OICQ를 사용해봤을 것이고, BP 기계 문자 메시지와 휴대폰 문자 메시지도 사용해 본 적이 있을 것입니다. 프로그래밍 친구들은 이 기능을 구현하고 싶어할 것입니다.
귀하의 프로그램이 휴대폰과 BP 기계로 전송될 수 있다면 멋질 것입니다.
이제 가능한 방법을 소개하겠습니다.
1. 원리
양측이 온라인 상태일 때만 통신할 수 있는 OICQ의 호출 기능과 다릅니다. 실제 호출기에 문자 메시지를 보낼 수 있습니다. 인터넷에 접속할 수만 있다면 언제 어디서나 스스로 할 수 있고 정보를 보낼 수 있습니다. 해외에 있더라도 중국에 있는 친구에게 정보를 보낼 수 있으며 국제 비용을 지불할 필요가 없습니다. 거리요금이 편리하고 번거롭지 않나요!
2. 분석
요즘 인터넷의 모든 호출 스테이션에는 온라인 서비스가 있으며 웹 호출이 일반적으로 사용됩니다. 인터넷으로 호출국 홈페이지에 접속한 후 호출국의 정보 호출 시스템에 의해 호출함으로써 이루어진다. 따라서 네트워크 페이징을 구현하려면 HTTP 프로토콜만 사용하면 됩니다. 다음은 HTTP 프로토콜에 대한 간략한 소개입니다.
HTTP에서 세션을 완료하려면 일반적으로 다음이 필요합니다. 1) 클라이언트 프로그램이 서버와 연결을 설정합니다. 2) 요청을 보냅니다. 3) 서버가 클라이언트에 응답합니다. 4) 연결을 닫습니다.
일반적으로 사용되는 HTTP 요청은 다음과 같습니다. 1) GET(웹 페이지 요청) 2) HEAD(웹 페이지 헤더 읽기) 3) PUT(저장된 웹 페이지 요청) 4) POST(이름이 지정된 리소스 첨부) 5 )DELETE( World Wide Web 삭제) 6)LINK(기존 리소스 2개 연결) 7)UNLINK(기존 리소스 2개 연결 해제)
HTTP에서 일반적으로 사용되는 응답 상태 코드는 다음과 같습니다. (*는 0-9 사이의 숫자를 나타냄) 1. 1**(정보) 2. 2**(성공) 3.4**(클라이언트 오류) 4.5**(서버 오류)
실제로 우리가 구현하려는 프로그램은 POST 및 GET 요청만 사용하고 정상적인 응답을 받습니다. POST는 사용자가 입력한 데이터를 데이터 스트림 형태로 CGI 프로그램에 전달하는 데 사용될 수 있습니다. CGI는 Contact-Length 환경 변수를 사용하여 해당 길이의 데이터 스트림 정보를 얻습니다.
POST 요청 형식은 다음과 같습니다.
포스트 http://www2.scuta.edu.cn/stu/chatroom/check.asp HTTP/1.0
수락: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-Powerpoint, application/vnd.ms-Excel, application/msWord, */*
추천인: http://www2.scuta.edu.cn/stu/
허용 언어: zh-cn
콘텐츠 유형: application/x-www-form-urlencoded
PRoxy 연결: 연결 유지
사용자 에이전트: Mozilla/4.0(호환 가능, MSIE 5.5, Windows 98)
호스트: www2.scuta.edu.cn
콘텐츠 길이: 87
Pragma: 캐시 없음
쿠키: ASPsessionIDQGGGQHHE=ABGNNOJCIGOFCDLBIOLHKAFK
서버의 일반 응답의 헤더 구조는 다음과 같습니다.
200 OK HTTP/1.0은 데이터 제출이 성공했음을 나타냅니다.
3. 프로그램 실시
Delphi의 NMHTTP는 위에서 언급한 데이터 제출을 쉽게 구현할 수 있으며 프록시도 지원합니다. 이는 프록시 서버를 통한 인터넷 액세스에도 적용 가능하며 OICQ에서 메시지를 보내는 데 사용되는 SOCKET5 프록시가 아닙니다.
새 양식을 만들고 callto라는 ComboBox 구성 요소를 추가하여 페이징 개체를 저장합니다. 예를 들어 Guosen 페이징에는 95908, 94908, 94909, 98062, 98063, 98019, 98035, 98052, 98038, 99055, 98060, 98061, 98051, 98003, 99062, 99016, 99017, 99018, 99019, 99046, 99076; 구성 요소 편집을 추가하고 페이징 번호를 나타내는 번호로 이름을 지정합니다. 구성 요소 RadioGroup을 추가하고 이름을 RadioGroup1로 설정하고 호출기 유형에 두 개의 항목을 추가합니다. 항목, 각각 중국 기계, 디지털 시스템, 페이지를 보낸 사람의 성을 나타내는 데 사용되는 firstName이라는 구성 요소 편집, RadioGroup2라는 구성 요소 추가, 캡션이 호출기의 성별로 설정되고 항목에 Mr. 그리고 Miss 추가 callmsg라는 구성요소는 전송된 정보를 입력하는 데 사용됩니다( 참고: 디지털 시스템의 경우 디지털 정보만 가능합니다. NMHTTP1이라는 이름의 확인란을 추가하여 소프트웨어 프록시 서버 주소에 대해 각각 두 개의 편집 구성요소를 추가합니다. 프록시 서버 포트, 마지막으로 명령 버튼을 추가하고 캡션을 "보내기"로 설정합니다.
이제 Guosen 페이징을 예로 들어 보겠습니다. "보내기" 버튼의 프로그램 코드는 다음과 같습니다.
절차 TForm1.Button1Click(Sender: TObject);
var callstr:문자열;
호출 시작str:='http://tips.gxspace.com/cgi-bin/tips/webpaging?stn_id='+callto.Text+'&page_no='+tonumber.Text;
RadioGroup1.ItemIndex의 경우
0:callstr:=callstr+'&pager_type=C';
1:callstr:=callstr+'&pager_type=N';
끝;
callstr:=callstr+'&firstname='+firstname.text;
RadioGroup2.ItemIndex의 경우
0:callstr:=callstr+'&제목=0';
1:callstr:=callstr+'&title=1';
끝;
callstr:=callstr+'&msg='+callmsg.Text+'&answer=null&B1=페이징 보내기';
NMHTTP1.InputFileMode := 거짓;
NMHTTP1.OutputFileMode := 거짓;
NMHTTP1.ReportLevel := 상태_기본;
ifuseproxy.Checked인 경우
시작하다
NMHTTP1.Proxy := 편집1.텍스트;
NMHTTP1.ProxyPort := StrToInt(Edit2.Text);
끝;
NMHTTP1.Get(callstr);
끝;
일부 페이징(예: Runxun 페이징은 위의 GET 요청으로 구현할 수 없으며 POST 요청이 필요함)의 사용법은 위와 크게 다르지 않습니다. 예를 들어 다음은 NMHTTP의 POST 사용법입니다.
NMHTTP1.InputFileMode:=거짓;
NMHTTP1.OutputFileMode:=참;
NMHTTP1.ReportLevel:=Status_Basic;
ifuseproxy.Checked인 경우
시작하다
NMHTTP1.Proxy := 편집1.텍스트;
NMHTTP1.ProxyPort := StrToInt(Edit2.Text);
끝;
NMHTTP1.HeaderInfo를 사용하면
시작하다
쿠키 := Edit5.Text;
LocalMailAddress := Edit6.Text;
LocalProgram := Edit7.Text;
참조자 := Edit8.Text;
사용자ID := Edit9.Text;
비밀번호 := Edit10.Text;
끝;
//제출할 데이터를 먼저 test.txt 파일에 넣습니다. 형식은 stnid=A&pageno=123456...입니다.
NMHTTP1.Post('http://www.wocall.com/script/zbwebcall.asp','test.txt');
//NMHTTP의 특정 사용법은 Delphi에 설치되어 있습니다. 현재 BorlandDelphi5DemosFastNetHttp에 NMHTTP 사용법의 예가 있습니다.
위의 내용은 모두 NMHTTP를 사용하여 구현되었습니다. 실제로 Delphi의 WebBrowser 구성 요소를 사용하여 데이터를 제출할 수도 있습니다. Webbrowser1.OleObject.Document.FrontPage_Form1.submit();
참고: WebBrowser1은 WebBrowser 구성 요소의 이름이고 Frontpage_Form1은 WebBrowser로 열린 웹 페이지의 양식 이름입니다.
웹페이지의 양식은 다음과 같습니다.
<FORM 이름=FrontPage_Form1 action=http://message.com.cn/cgi-bin/ips/webpaging method=post>
...
</양식>
구현 방법은 프로그램을 사용하여 사용자 입력 정보를 기반으로 웹 페이지를 생성한 다음 WebBrowser1.Navigate(생성된 웹 페이지)를 전달하고 최종적으로 Webbrowser1.OleObject.Document.FrontPage_Form1.submit() 서버에 제출하는 것입니다. 한 번 페이징하면 완료됩니다.