- 论坛徽章:
- 0
|
client:
int main( void )
{
struct sockaddr_in peer;
int s;
int rc;
char buf[ 20 ];
peer.sin_family = AF_INET;
peer.sin_port = htons( 7500 );
peer.sin_addr.s_addr = inet_addr( "192.168.224.129" );
s = socket( AF_INET, SOCK_STREAM, 0 );
rc = connect( s, ( struct sockaddr * )&peer, sizeof(peer ) );
send( s, "client to server", 17, 0 );
rc = recv( s, buf, 17, 0 );
if ( rc <= 0 )
perror( "recv call failed" );
else
printf( "%s\n", buf );
exit( 0 );
}
##############################
server:
int main( void )
{
struct sockaddr_in local;
int s;
int s1;
int rc;
char buf[ 20 ];
local.sin_family = AF_INET;
local.sin_port = htons( 7500 );
local.sin_addr.s_addr = htonl( INADDR_ANY );
s = socket( AF_INET, SOCK_STREAM, 0 );
if ( s < 0 )
{
perror( "socket call failed" );
exit( 1 );
}
rc = bind( s, ( struct sockaddr * )&local, sizeof( local ) );
rc = listen( s, 5 );
s1 = accept( s, NULL, NULL );
rc = recv( s1, buf, 17, 0 );
printf( "%s\n", buf );
rc = send( s1, "server to client", 17, 0 );
if ( rc <= 0 )
perror( "send call failed" );
memset( buf, 0, 20 );
exit( 0 );
}
###########################
1,传送少量数据(比如client->;server 1,s->;c 2)时不会出问题
2,如上程序,第一次运行程序正确,第二次运行时报“bind call failure :address already in use”(在本机上,s后台运行)
请教各位这是什么道理,我已经memset( buf, 0, 20 )了? |
|