📄 simpleclient.c
字号:
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <errno.h>
#include <fcntl.h>
#include <setjmp.h>
#include <netdb.h>
#include <sys/param.h>
#include <netinet/in.h>
#define SERVERPORT 6700
#define SNDBUFFERSIZE 100
#define RCVBUFFERSIZE 100
int sock;
struct sockaddr_in sin;
void fatal( char * );
void server();
void *shutdown( int sig_nr )
{
close( sock );
exit(0);
return(0);
}
void fatal( char *text )
{
printf( "Error in %s\n", text );
exit( 1 );
}
ssize_t readn(int fd, void * vptr, size_t n)
{
ssize_t nleft;
ssize_t nread;
char * ptr;
ptr = vptr;
nleft = n;
while(nleft > 0){
if((nread = read(fd,ptr,nleft)) < 0){
if(errno == EINTR)
nread = 0;
else
return -1;
}
else
if(nread == 0) break;
nleft -= nread;
ptr += nread;
}
return (n-nleft);
}
ssize_t writen(int fd, const void * vptr, size_t n)
{
ssize_t nleft;
ssize_t nwriten;
const char * ptr;
ptr = vptr;
nleft = n;
while(nleft > 0){
if( (nwriten = write(fd, ptr,nleft)) <= 0){
if(errno == EINTR)
nwriten = 0;
else
return -1;
}
nleft -= nwriten;
ptr += nwriten;
}
return n;
}
void server()
{
int addrlen, length, counter;
short optval;
char *buffer;
signal(SIGTERM, (void *)shutdown);
if( (sock = socket(AF_INET, SOCK_STREAM, 0)) == -1 )
fatal( "Create Socket.\n" );
sin.sin_family = AF_INET;
sin.sin_port = htons( SERVERPORT );
sin.sin_addr.s_addr =inet_addr("10.0.0.1");
bzero( &( sin.sin_zero), 8 );
if ( connect( sock, (struct sockaddr*)&sin, sizeof(sin) ) <0 ){
printf( "Connect to the other side error!\n" );
return;
}
buffer = (char*) malloc( SNDBUFFERSIZE );
sprintf( buffer, "%s", "hello world" );
if( writen( sock, buffer, SNDBUFFERSIZE) == -1 ){
printf( "Error during send!\n" );
}
free (buffer);
close( sock ); //parent do not need this
}
main( void )
{
server();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -