1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ScktComp, Menus;
function Hex(strData:string): string;
type TForm1 = class(TForm) edt_Server: TLabeledEdit; btn_Connect: TButton; edt_Port: TLabeledEdit; ClientSocket: TClientSocket; pnl_Status: TPanel; MainMenu: TMainMenu; mmt_Datei: TMenuItem; mms_Beenden: TMenuItem; mem_Chat: TMemo; edt_Text: TEdit; btn_Senden: TButton; btn_Disconnect: TButton; edt_Username: TLabeledEdit; edt_Passwort: TLabeledEdit; procedure btn_ConnectClick(Sender: TObject); procedure ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure mms_BeendenClick(Sender: TObject); procedure ClientSocketConnecting(Sender: TObject; Socket: TCustomWinSocket); procedure btn_DisconnectClick(Sender: TObject); procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket); procedure btn_SendenClick(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
Function NetErrMessage(ErrorCode: Integer): String; begin case ErrorCode of 10004: result := 'Aufruf wurde abgebrochen!'; 10013: result := 'Zufriffsfehler!'; 10014: result := 'Falsche Parameter!'; 10038: result := 'Ungültiger Socket angegeben!'; 10039: result := 'Es wurde keine Zieladresse angegeben!'; 10048: result := 'IP-Adresse bzw. Port werden schon/noch benutzt!'; 10049: result := 'Port oder Adresse nicht verfügbar!'; 10050: result := 'Netzwerk reagiert nicht!'; 10051: result := 'Netzwerk ist nicht erreichbar!'; 10054: result := 'Verbindung wurde getrennt!'; 10056: result := 'Socket schon verbunden!'; 10060: result := 'Aufruf dauert zu lange, daher Abbruch!'; 10061: result := 'Server nicht gefunden, oder Verbindung nicht akzeptiert!'; 11001: result := 'DNS-Server nicht gefunden!'; else result := 'Ein Unbekannter Fehler ist aufgetreten. [' + IntToStr(ErrorCode) + ']'; end; end;
function Hex(strData:string): string; var sresult:string; sfinal:string; hexc:cardinal; i:integer; begin i:=1; while i<=length(strData) do begin hexc := strtoint('$' + copy(strData,i,2)); sresult := inttostr(hexc); sresult := chr(strtoint(sresult)); sfinal := sfinal + sresult; i:=i+2; end; result := sfinal end;
procedure TForm1.btn_ConnectClick(Sender: TObject); begin if edt_Server.Text = '' then begin MessageDlg('Keine IP gegeben', mtError, [mbOK], 0); end else begin ClientSocket.Port := StrToInt(edt_Port.Text); ClientSocket.Host := edt_Server.Text; ClientSocket.Active := True; end; end;
procedure TForm1.ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); begin pnl_Status.Color := clGreen; pnl_Status.Caption := 'Status: verbunden'; Clientsocket.Open; with Clientsocket.Socket do begin SendText('CVERS 11015 4610' + #13#10); SendText('PASS '+ edt_Passwort.Text + #13#10); SendText('NICK '+ edt_Username.Text + #13#10); SendText('apgar WjHsUUs 0' + #13#10); SendText('SERIAL 0' + #13#10); SendText('USER '+ edt_Passwort.Text + ' ' + ClientSocket.Socket.LocalAddress + ' ' + edt_Server.Text + ' :RealName' + #13#10); SendText('verchk 32514 720911' + #13#10); end; edt_Server.Enabled := False; edt_Port.Enabled := False; edt_Username.Enabled := False; edt_Passwort.Enabled := False; end;
procedure TForm1.ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin pnl_Status.Color := clRed; edt_Server.Enabled := True; edt_Port.Enabled := True; edt_Username.Enabled := True; edt_Passwort.Enabled := True; end;
procedure TForm1.ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin if Errorcode <> 0 then Showmessage('Server: '+NetErrMessage(ErrorCode)); errorcode := 0; end;
procedure TForm1.mms_BeendenClick(Sender: TObject); begin Close; end;
procedure TForm1.ClientSocketConnecting(Sender: TObject; Socket: TCustomWinSocket); begin pnl_Status.Color := $000080FF; pnl_Status.Caption := 'Status: versuche zu verbinden'; end;
procedure TForm1.btn_DisconnectClick(Sender: TObject); begin ClientSocket.Active := False; ClientSocket.Port := 0; ClientSocket.Host := ''; end;
procedure TForm1.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket); begin mem_Chat.Text := mem_Chat.Text + ClientSocket.Socket.ReceiveText; end;
procedure TForm1.btn_SendenClick(Sender: TObject); begin ClientSocket.Socket.SendText(edt_Text.Text); end;
end. |