iLen = sizeof( server );
if( getsockname( sHandle,( struct sockaddr * )&server, &iLen ) < 0 )
{
return sockGetSockName;
}
listen(sHandle,5);
return (sHandle);
}
int sockClientOpen( char *pszHost, int sinPort ,int timeout)
{
int sHandle;
sigfunc *sig;
struct sockaddr_in server;
struct hostent *hp,*gethostbyname();
if( setjmp( tohere1 ) )
{
signal( SIGALRM, sig);
return ( sockOpenFail );
}
sig=signal( SIGALRM, alrm1);
alarm( timeout ); if( ( sHandle = socket( AF_INET, SOCK_STREAM, 0 ) ) < 0 )
return sockOpenFail; server.sin_family=AF_INET;
/*
if( ( hp = gethostbyname( pszHost ) ) == NULL )
{
if( ( hp = gethostbyaddr(pszHost,strlen(pszHost),SOCK_STREAM) ) == NULL )
{
alarm( 0 );
signal( SIGALRM, sig);
return sockUnknowHost;
}
}
memcpy( (char *)&server.sin_addr, (char *)hp->h_addr, hp->h_length );
*/
server.sin_addr.s_addr=inet_addr(pszHost);
server.sin_port = htons(sinPort); if( connect( sHandle, (struct sockaddr *)&server, sizeof(server) ) < 0 )
{
alarm( 0 );
signal( SIGALRM, sig);
return sockConnectFail;
}
alarm( 0 );
signal( SIGALRM, sig);
return( sHandle );
}
int sockClose( int sHandle )
{
close( sHandle );
return( 0 );
}
int sockSendBuf( int sHandle, void *pszBuf, int iLen ,int iTimeOut)
{
int iRet=0;
sigfunc *sig;
int i=0;
if( setjmp( tohere1 ) )
{
signal( SIGALRM, sig);
return ( sockRecvTimeOut );
}
sig=signal( SIGALRM, alrm1);
alarm( iTimeOut );
while(iRet
if((i=send(sHandle, pszBuf, iLen-iRet, 0))<0)
{
alarm(0);
signal(SIGALRM,sig);
return(i);
}
iRet=iRet i;
pszBuf=(char *) pszBuf i;
}
alarm( 0 );
signal( SIGALRM, sig);
if( iRet < 0 ) return( sockSendFail );
return( iRet );
}
int sockRecvBuf( int sHandle, void *pszBuf, int iMaxLen,int iTimeOut )
{
int iLen=0,i=0;
sigfunc *sig;if( setjmp( tohere1 ) )
{
signal( SIGALRM, sig);
return ( sockRecvTimeOut );
}
sig=signal( SIGALRM, alrm1);
alarm( iTimeOut );
while(iLen
i = recv( sHandle, pszBuf, iMaxLen-iLen,0);
if (iLen < 0 )
{
alarm( 0 );
signal( SIGALRM, sig);
return (i);
}
iLen =i;
pszBuf=(char *)pszBuf i;
}
alarm( 0 );
signal( SIGALRM, sig);
return( iLen );
}
int sockListen( int sHandle )
{
int iSock;
do
{
iSock = accept( sHandle, ( struct sockaddr * )NULL, ( int * )NULL );
} while(iSock==-1&&EINTR==errno);
return(iSock);
}
推荐阅读
- 如何在OpenServer上建立可以显示中文的终端机
- 济宁经纬度是多少
- 什么叫双电源末端切换
- simp server for unix 配置教程
- 完美世界中玩手游端游联动具体操作方法
- 在手机端完美解决百度云下载速度慢的问题
- 只针对非图形的用户 如何注销sco openserver的空闲用户
- 端午节手抄报资料内容短 端午节手抄报
- SCO OpenServer序列号sn
- 在安装SCO OpenServer时如何设置硬盘驱动器
