C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[59099] 소켓 프로그램인데요.. 머가 잘 못된걸까요..
아무리생각해도.. [] 1155 읽음    2009-11-13 19:43
서버와 클라인트 간에 통신을 하는 프로그램을 만드는데요..

1450바이트 이하를 한번에는 보내지고 왔다갔다 통신을 잘하는데요.

1500바이트는 왔다갔다 하지 못하네요..

이유가 먼지 해결좀 해주세요..ㅠ

[/code] Client

#define BUFSIZE 1455
short Client(int argc, char **argv)
{
WSADATA wsaData;
SOCKET hSocket;
char message[BUFSIZE];
char cancel[16];
char cancel1[16];
char message1[BUFSIZE],cDummyBuf[16];
int iLen =0,nResult, iLen1 =0;

SOCKADDR_IN dummyAddr;
int dummyLength,buff_len;
int addrLength;
SOCKADDR_IN servAddr;

if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){
ErrorHandling("WSAStartup() error!");
return RTN_TRUE;
}

hSocket=socket(PF_INET, SOCK_DGRAM, 0);
if(hSocket == INVALID_SOCKET){
ErrorHandling("socket() error");
return RTN_TRUE;
}

memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family=AF_INET;

memset(cDummyBuf, CH_NULL,sizeof(cDummyBuf));
ScreenAllSet(" *TCP/IP접속IP* ",
CH_NULL,
CH_NULL,
" [.]SP = '.' ", TRUE);

nResult = InputStyleNum(2, 0, (uchar *)". ",
StrLen(15, (uchar*)cDummyBuf),
15, (uchar *)cDummyBuf, 30);

if(nResult < RTN_FALSE)
return RTN_TRUE;

servAddr.sin_addr.s_addr=inet_addr((const char*)cDummyBuf);
servAddr.sin_port=htons(atoi((char*)"9002"));

memset(cancel1,CH_NULL,sizeof(cancel1));
memset(cancel,CH_NULL,sizeof(cancel));

ScreenAllSet((char*)"Client Test", CH_NULL, CH_NULL, CH_NULL, 1);


while(1)
{
memset(message,CH_0,sizeof(message));

addrLength = sizeof(servAddr);
sendto(hSocket, message, strlen(message), 0, (SOCKADDR*)&servAddr, addrLength);

dummyLength = sizeof(dummyAddr);
buff_len = recvfrom(hSocket, message1, sizeof(message1), 0, (SOCKADDR*)&dummyAddr, &dummyLength);

message1[buff_len]=0;

if(memcmp(message, message1, sizeof(message1))){
sprintf(cancel,"Cancel = %d",iLen);
ScreenAllSet((char*)"Cancel", cancel, message, message1, 1);
Wait(500, WAIT_TIMER);
iLen++;
continue;
}

if(!message1) {
sprintf(cancel1,"NULL = %d",iLen1);
ScreenAllSet((char*)"NULL", CH_NULL, cancel, cancel1, 1);
Wait(500, WAIT_TIMER);
iLen1++;
continue;
}

if(KeyRead() == K_CANCEL){
ScreenAllSet((char*)"Result", CH_NULL, cancel, cancel1, 1);
WaitChar(0, WAIT_KEY | WAIT_TIMER, K_ENTER);
return RTN_CANCEL;
}
}

closesocket(hSocket);
WSACleanup();
return -1;
}

[code] server

int Server(int argc, char **argv)
{
WSADATA wsaData;
SOCKET hServSock;
char message[BUFSIZE];

int strLen;

SOCKADDR_IN servAddr;
SOCKADDR_IN clntAddr;
int clntAddrSize;

if(argc!=2){
ErrorHandling("Port error!");
}


if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
ErrorHandling("WSAStartup() error!");


hServSock=socket(PF_INET, SOCK_DGRAM, 0);
if(hServSock == INVALID_SOCKET)
ErrorHandling("socket() error!");


memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=htonl(INADDR_ANY);
servAddr.sin_port=htons(atoi((char*)"9002"));

if(bind(hServSock, (SOCKADDR*) &servAddr, sizeof(servAddr))==SOCKET_ERROR)
ErrorHandling("bind() error");

ScreenAllSet((char*)"Server Test", CH_NULL, CH_NULL, CH_NULL, 1);

while(1) {
clntAddrSize=sizeof(clntAddr);
strLen = recvfrom(hServSock, message, BUFSIZE, 0, (SOCKADDR*)&clntAddr, &clntAddrSize);
message[strLen]=0;
sendto(hServSock, message, strLen, 0, (SOCKADDR*)&clntAddr, sizeof(clntAddr));

}

closesocket(hServSock);
WSACleanup();
return -1;
}

void ErrorHandling(char *message)
{
ScreenAllSet((char*)"error", CH_NULL, message, CH_NULL, 1);

exit(1);
}

+ -

관련 글 리스트
59099 소켓 프로그램인데요.. 머가 잘 못된걸까요.. 아무리생각해도.. 1155 2009/11/13
59100     Re:소켓 프로그램인데요.. 머가 잘 못된걸까요.. nansama 1101 2009/11/13
59101         Re:Re:소켓 프로그램인데요.. 머가 잘 못된걸까요.. 아무리생각해도.. 1095 2009/11/13
59120             Re:Re:Re:소켓 프로그램인데요.. 머가 잘 못된걸까요.. 아제나 1358 2009/11/16
59102             Re:Re:Re:소켓 프로그램인데요.. 머가 잘 못된걸까요.. nansama 1085 2009/11/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.