Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
UDP 로 통신을 하려면 어떻게 해야하나요?
안녕하세요
UDP 1024 PORT 로 통신하려고 하는데
일반 Server/Client Socket으로는 통신이 않돼나요?
그럼 어떻게 통신할 수 있나요
관련 자료 부탁드립니다.
1
COMMENTS
마코디
•
2004.02.13 18:36
UDP 통신을 할때 SOCKET 이나 INDY 컴포넌트를 사용하는데
델파이 7에는 인디가 기본적으로 있으니까 그것을 이용하시면 편하게 쓸 수 있습니다. 관련자료는 인디 컴포넌트 사이트에 가시면 데모 소스 잘 되어 있구요..
C/S 버전 하나 소스 올리지요.
1024 PORT 를 사용하고 싶다면 포트 설정만 하시면 됩니다.
{-----------------------------------------------------------------------------
Demo Name: UDP Client
Author: <unknown - please contact me to take credit! - Allen O'Neill>
Copyright: Indy Pit Crew
Purpose:
History:
Date: 27/10/2002 01:00:36
Checked with Indy version: 9.0 - Allen O'Neill - Springboard Technologies Ltd - http://www.springboardtechnologies.com
-----------------------------------------------------------------------------
Notes:
Simple UDP client demo
}
unit UDPClientMain;
interface
uses
Windows, Messages, Graphics, Controls, Forms, Dialogs, IdWinsock2, stdctrls,
SysUtils, Classes, IdBaseComponent, IdAntiFreezeBase, IdAntiFreeze,
IdComponent, IdUDPBase, IdUDPClient, IdStack;
type
TUDPMainForm = class(TForm)
SourceGroupBox: TGroupBox;
HostNameLabel: TLabel;
HostAddressLabel: TLabel;
HostName: TLabel;
HostAddress: TLabel;
UDPAntiFreeze: TIdAntiFreeze;
PortLabel: TLabel;
Port: TLabel;
DestinationLabel: TLabel;
DestinationAddress: TLabel;
BufferSizeLabel: TLabel;
BufferSize: TLabel;
UDPMemo: TMemo;
SendButton: TButton;
UDPClient: TIdUDPClient;
procedure FormCreate(Sender: TObject);
procedure SendButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
UDPMainForm: TUDPMainForm;
implementation
const
HOSTNAMELENGTH = 80;
RECIEVETIMEOUT = 5000; // milliseconds
{$R *.DFM}
procedure TUDPMainForm.FormCreate(Sender: TObject);
begin
Randomize; // remove if you want reproducible results.
HostName.Caption := UDPClient.LocalName;
HostAddress.Caption := GStack.LocalAddress;
Port.Caption := IntToStr(UDPClient.Port);
DestinationAddress.Caption := UDPClient.Host;
BufferSize.Caption := IntToStr(UDPClient.BufferSize);
UDPClient.ReceiveTimeout := RECIEVETIMEOUT;
end;
procedure TUDPMainForm.SendButtonClick(Sender: TObject);
var
MessageID: Integer;
ThisMessage: String;
ReceivedString: String;
begin
MessageID := Random(MAXINT);
ThisMessage := 'Message: ' + IntToStr(MessageID);
UDPMemo.Lines.Add('Sending ' + ThisMessage);
UDPClient.Send(ThisMessage);
ReceivedString := UDPClient.ReceiveString();
if ReceivedString = '' then
UDPMemo.Lines.Add('No response received from the server after ' + IntToStr(UDPClient.ReceiveTimeout) + ' millseconds.')
else
UDPMemo.Lines.Add('Received: ' + ReceivedString)
end;
end.
{
-----------------------------------------------------------------------------
Demo Name: UDP Server
Author: <unknown - please contact me to take credit! - Allen O'Neill>
Copyright: Indy Pit Crew
Purpose:
History:
Date: 27/10/2002 01:00:36
Checked with Indy version: 9.0 - Allen O'Neill - Springboard Technologies Ltd
- http://www.springboardtechnologies.com
-----------------------------------------------------------------------------
Notes:
Simple UDP server demo
}
unit UDPServerMain;
interface
uses
Windows, Messages, Graphics, Controls, Forms, Dialogs, IdWinsock2, stdctrls,
SysUtils, Classes, IdBaseComponent, IdAntiFreezeBase, IdAntiFreeze,
IdComponent, IdUDPBase, IdUDPClient, IdStack, IdUDPServer, IdSocketHandle;
type
TUDPMainForm = class(TForm)
SourceGroupBox: TGroupBox;
HostNameLabel: TLabel;
HostAddressLabel: TLabel;
HostName: TLabel;
HostAddress: TLabel;
UDPServer: TIdUDPServer;
UDPAntiFreeze: TIdAntiFreeze;
PortLabel: TLabel;
Port: TLabel;
BufferSizeLabel: TLabel;
BufferSize: TLabel;
UDPMemo: TMemo;
procedure FormCreate(Sender: TObject);
procedure UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
private
{ Private declarations }
public
{ Public declarations }
end;
var
UDPMainForm: TUDPMainForm;
implementation
const
HOSTNAMELENGTH = 80;
{$R *.DFM}
procedure TUDPMainForm.FormCreate(Sender: TObject);
begin
HostName.Caption := UDPServer.LocalName;
HostAddress.Caption := GStack.LocalAddress;
Port.Caption := IntToStr(UDPServer.DefaultPort);
BufferSize.Caption := IntToStr(UDPServer.BufferSize);
UDPServer.Active := True;
end;
procedure TUDPMainForm.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
DataStringStream: TStringStream;
s: String;
begin
DataStringStream := TStringStream.Create('');
try
DataStringStream.CopyFrom(AData, AData.Size);
UDPMemo.Lines.Add('Received "' + DataStringStream.DataString + '" from ' + ABinding.PeerIP + ' on port ' + IntToStr(ABinding.PeerPort));
s := 'Replied from ' + UDPServer.LocalName + ' to "' + DataStringStream.DataString + '"';
ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, s[1], Length(s));
finally
DataStringStream.Free;
end;
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
임진묵
2004.01.31 19:58
0
COMMENTS
/
0
LIKES
Datasnap 사용지 라이센스 수량에 대해서...
전봉수
•
2004.01.31 18:42
2
COMMENTS
/
0
LIKES
빈 레코드와 문자가든 레코드 카운트는 어떻게
김종균
•
2004.02.05 18:05
null 값을 이용해서 검색 한후 그에 따른 결과를 카운트 하시고여 update를 사용해서 해당 되는 컬럼을 변...
전봉수
•
2004.02.05 21:07
김민우
•
•
2004.01.31 06:28
1
COMMENTS
/
10
LIKES
UDP 로 통신을 하려면 어떻게 해야하나요?
안녕하세요 UDP 1024 PORT 로 통신하려고 하는데 일반 Server/Client Socket으로는 통신이 않돼나요? 그럼 어떻게 통신할 수 있나요 관련 자료 부탁드립니다.
마코디
•
2004.02.13 18:36
UDP 통신을 할때 SOCKET 이나 INDY 컴포넌트를 사용하는데 델파이 7에는 인디가 기본적으로 있으니까 그...
김진태
2004.01.31 05:54
0
COMMENTS
/
0
LIKES
스트링 그리드에서......
박상현
2004.01.31 03:08
0
COMMENTS
/
0
LIKES
파라독스 데이터를 비주얼 베이직에서 ADO로 불러올때 문제
윤혜정
•
2004.01.31 03:06
1
COMMENTS
/
0
LIKES
ocx 파라미터 입력값..
남양원
•
2004.02.02 19:17
ocx 프로그램에서 파라미터 입력값으로 스트링형을 WideString으로 입력받으세요... 테스트 Tip인데여.....
김혜진
•
2004.01.31 02:25
1
COMMENTS
/
0
LIKES
TWSocket 은 델파이에서 제공되는건가요?아님 공개 컴포넌트 인가요?
박성훈
•
2004.02.04 04:39
안녕하세요. ICS라고 하는 패키지내에 들어가 있는 컴포넌트 입니다. 공객용이구요 아마 자료실에도 ...
고래고래
•
2004.01.31 00:48
1
COMMENTS
/
0
LIKES
소켓으로 연결하기에서.....
sallyslaw
•
2004.01.31 01:30
첫번째는 BDE 문제는 아닙니다. 소켓에서 발생하는 문제인 듯 싶은데.. 시스템에 따라 소켓 버퍼 사...
유부남
2004.01.30 22:12
0
COMMENTS
/
0
LIKES
soapConnection 사용할때 인터베이스 연결하기?
민병희
•
2004.01.30 19:51
1
COMMENTS
/
0
LIKES
VCD/DVD제작에 관하여
박상윤
•
2004.03.23 23:06
음.. MSDN 이나 directX sdk 의 도움말을 참고하세여 참고로.. directX 도움말 8.0은.. 한글 ...
휴초보
•
2004.01.30 18:40
5
COMMENTS
/
0
LIKES
POS시스템 개발 경험이 있으신분 조언좀...
윤신호
•
2004.01.30 20:56
일단은 포스시스템을 직접 한번 보셔야 할듯합니다. 어떻게 프로그램이 구동되는지를.. 선불제(주문시 결...
sallyslaw
•
2004.01.30 19:48
우선 말씀하신 cashdrawer 나 printer 또는 pos용 모니터(터치스크린 등) 등의 콘트롤은 하드웨어 구...
휴초보
•
2004.01.30 20:03
답변 감사합니다. 번거롭지 않다면 샘플이라도 전에 하셨던 DB를 얻을 수 있을까요 ? 다시한번 감사합니...
유동기
•
2004.01.30 19:07
너무 광범위한 질문이네요. 간단하게 말씀드리면 영수증 프린터에도 드라이버가 제공됩니다. 따라서 일반...
휴초보
•
2004.01.30 20:05
감사합니다. 그런데 저에게는 너무 막막합니다. 그런데 데이블 합석 혹은 단제처리는 어떤 방법으로 해야...
휴초보
•
2004.01.30 18:38
3
COMMENTS
/
0
LIKES
MSACCESS 2000 MDB에 걸린 암호 푸는법 ?
이훈
•
2004.01.30 18:49
헥사 에디터로 수정하면 되던뎅... 파일 올려보세요
휴초보
•
2004.01.30 19:46
헥사 에디터로 수정할 때 암호의 위치기 어디쯤인지 어떻게 아나요 ?
이훈
•
2004.01.30 22:22
기억하는건 파일 처음부분에 있던걸로 아는데 확실한 위치는 제가 지금 잘 모르겠고요 직접 하실려면 디...
jerom
•
2004.01.30 17:26
1
COMMENTS
/
0
LIKES
데이타베이스 선택에 관한 질문입니다.
정경철
•
2004.01.30 23:21
네트웍 프로그램이라면 볼랜드사에서 개발한 InterBase 도 있습니다. 언젠가 6.0이 공개된 적이 있던데...&...
노미오
2004.01.30 09:48
0
COMMENTS
/
0
LIKES
edit 컴포넌트에서 default를 한글입력대기 모드로 하려면???
goodlsw
•
2004.01.30 05:16
1
COMMENTS
/
0
LIKES
help 화일이 다 날라갔어요.
Galaxy
•
2004.01.31 01:19
안녕하세요 수고 많습니다. 저는 Delphi4.0 사용하고 있습니다. 님이 원하는 답은 아닐수 있습니다. ...
심상덕
2004.01.30 05:08
0
COMMENTS
/
0
LIKES
Evaluating 이 나타나지 않게 하는법좀 갈켜주셔요...
이원진
•
2004.01.30 04:45
1
COMMENTS
/
0
LIKES
dbgrid의 프로퍼티 질문드립니다.
너구리
•
2004.01.30 20:36
onchange이벤트는 datasource에 있습니다.
김현주
•
2004.01.30 01:48
1
COMMENTS
/
0
LIKES
mdb에서 date type의 필드를 sql에서 거를때...
이윤도
•
2004.01.30 02:15
방금 테스트해보니깐...님처럼 했을땐 검색이 되지 않습니다... 그렇게 하시지 마시구요... SQL....
이미희
•
2004.01.30 01:46
1
COMMENTS
/
0
LIKES
format string..
^ㅡ^
•
2004.01.30 02:52
일단 님이 쓰시고 계시는 format은요 간단히 설명하자면 자리를 잡는건데요 앞에는 자리를 어게 잡...
김창완
2004.01.30 01:31
0
COMMENTS
/
0
LIKES
바탕화면 아이콘에 파일을 드로그해서 프로그램을 실행시키는 방법에 대해
김민우
2004/01/31 06:28
Views
672
Likes
10
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
델파이 7에는 인디가 기본적으로 있으니까 그것을 이용하시면 편하게 쓸 수 있습니다. 관련자료는 인디 컴포넌트 사이트에 가시면 데모 소스 잘 되어 있구요..
C/S 버전 하나 소스 올리지요.
1024 PORT 를 사용하고 싶다면 포트 설정만 하시면 됩니다.
{-----------------------------------------------------------------------------
Demo Name: UDP Client
Author: <unknown - please contact me to take credit! - Allen O'Neill>
Copyright: Indy Pit Crew
Purpose:
History:
Date: 27/10/2002 01:00:36
Checked with Indy version: 9.0 - Allen O'Neill - Springboard Technologies Ltd - http://www.springboardtechnologies.com
-----------------------------------------------------------------------------
Notes:
Simple UDP client demo
}
unit UDPClientMain;
interface
uses
Windows, Messages, Graphics, Controls, Forms, Dialogs, IdWinsock2, stdctrls,
SysUtils, Classes, IdBaseComponent, IdAntiFreezeBase, IdAntiFreeze,
IdComponent, IdUDPBase, IdUDPClient, IdStack;
type
TUDPMainForm = class(TForm)
SourceGroupBox: TGroupBox;
HostNameLabel: TLabel;
HostAddressLabel: TLabel;
HostName: TLabel;
HostAddress: TLabel;
UDPAntiFreeze: TIdAntiFreeze;
PortLabel: TLabel;
Port: TLabel;
DestinationLabel: TLabel;
DestinationAddress: TLabel;
BufferSizeLabel: TLabel;
BufferSize: TLabel;
UDPMemo: TMemo;
SendButton: TButton;
UDPClient: TIdUDPClient;
procedure FormCreate(Sender: TObject);
procedure SendButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
UDPMainForm: TUDPMainForm;
implementation
const
HOSTNAMELENGTH = 80;
RECIEVETIMEOUT = 5000; // milliseconds
{$R *.DFM}
procedure TUDPMainForm.FormCreate(Sender: TObject);
begin
Randomize; // remove if you want reproducible results.
HostName.Caption := UDPClient.LocalName;
HostAddress.Caption := GStack.LocalAddress;
Port.Caption := IntToStr(UDPClient.Port);
DestinationAddress.Caption := UDPClient.Host;
BufferSize.Caption := IntToStr(UDPClient.BufferSize);
UDPClient.ReceiveTimeout := RECIEVETIMEOUT;
end;
procedure TUDPMainForm.SendButtonClick(Sender: TObject);
var
MessageID: Integer;
ThisMessage: String;
ReceivedString: String;
begin
MessageID := Random(MAXINT);
ThisMessage := 'Message: ' + IntToStr(MessageID);
UDPMemo.Lines.Add('Sending ' + ThisMessage);
UDPClient.Send(ThisMessage);
ReceivedString := UDPClient.ReceiveString();
if ReceivedString = '' then
UDPMemo.Lines.Add('No response received from the server after ' + IntToStr(UDPClient.ReceiveTimeout) + ' millseconds.')
else
UDPMemo.Lines.Add('Received: ' + ReceivedString)
end;
end.
{
-----------------------------------------------------------------------------
Demo Name: UDP Server
Author: <unknown - please contact me to take credit! - Allen O'Neill>
Copyright: Indy Pit Crew
Purpose:
History:
Date: 27/10/2002 01:00:36
Checked with Indy version: 9.0 - Allen O'Neill - Springboard Technologies Ltd
- http://www.springboardtechnologies.com
-----------------------------------------------------------------------------
Notes:
Simple UDP server demo
}
unit UDPServerMain;
interface
uses
Windows, Messages, Graphics, Controls, Forms, Dialogs, IdWinsock2, stdctrls,
SysUtils, Classes, IdBaseComponent, IdAntiFreezeBase, IdAntiFreeze,
IdComponent, IdUDPBase, IdUDPClient, IdStack, IdUDPServer, IdSocketHandle;
type
TUDPMainForm = class(TForm)
SourceGroupBox: TGroupBox;
HostNameLabel: TLabel;
HostAddressLabel: TLabel;
HostName: TLabel;
HostAddress: TLabel;
UDPServer: TIdUDPServer;
UDPAntiFreeze: TIdAntiFreeze;
PortLabel: TLabel;
Port: TLabel;
BufferSizeLabel: TLabel;
BufferSize: TLabel;
UDPMemo: TMemo;
procedure FormCreate(Sender: TObject);
procedure UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
private
{ Private declarations }
public
{ Public declarations }
end;
var
UDPMainForm: TUDPMainForm;
implementation
const
HOSTNAMELENGTH = 80;
{$R *.DFM}
procedure TUDPMainForm.FormCreate(Sender: TObject);
begin
HostName.Caption := UDPServer.LocalName;
HostAddress.Caption := GStack.LocalAddress;
Port.Caption := IntToStr(UDPServer.DefaultPort);
BufferSize.Caption := IntToStr(UDPServer.BufferSize);
UDPServer.Active := True;
end;
procedure TUDPMainForm.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
DataStringStream: TStringStream;
s: String;
begin
DataStringStream := TStringStream.Create('');
try
DataStringStream.CopyFrom(AData, AData.Size);
UDPMemo.Lines.Add('Received "' + DataStringStream.DataString + '" from ' + ABinding.PeerIP + ' on port ' + IntToStr(ABinding.PeerPort));
s := 'Replied from ' + UDPServer.LocalName + ' to "' + DataStringStream.DataString + '"';
ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, s[1], Length(s));
finally
DataStringStream.Free;
end;
end;
end.