Skip to content

Instantly share code, notes, and snippets.

@kelvin-fly
Created September 11, 2012 01:05
Show Gist options
  • Select an option

  • Save kelvin-fly/3695217 to your computer and use it in GitHub Desktop.

Select an option

Save kelvin-fly/3695217 to your computer and use it in GitHub Desktop.
in b/s. the client
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <arpa/inet.h>
#define REMOTE_PORT 1234
#define MAX_LEN 512
int main(int argc,char **argv)
{
int sock_fd,ret;
int len;
char buf[MAX_LEN];
struct sockaddr_in local_addr, remote_addr;
sock_fd = socket(AF_INET,SOCK_STREAM,0);
if(sock_fd<0)
{
perror("socket()");
return sock_fd;
}
local_addr.sin_family = AF_INET;
local_addr.sin_port = htons(0); //select port random!! not 0 port!
local_addr.sin_addr.s_addr = htonl(INADDR_ANY); //automatic ip capture
remote_addr.sin_family = AF_INET;
remote_addr.sin_port = htons(REMOTE_PORT);
ret = inet_aton("127.0.0.1",&remote_addr.sin_addr);
ret = bind(sock_fd,(struct sockaddr *)&local_addr,sizeof(local_addr));
if(ret<0)
{
perror("bind()!");
close(sock_fd);
return ret;
}
ret = connect(sock_fd,(struct sockaddr *)&remote_addr,(socklen_t)sizeof(remote_addr));
if(ret<0)
{
perror("connect()");
close(sock_fd);
return ret;
}
memset(buf,0,MAX_LEN);
while(1)
{
int i;
len = send(sock_fd,"hello",6,0);
if(len<=0)
{
perror("send()");
close(sock_fd);
return ret;
}
sleep(1);
len = recv(sock_fd,buf,MAX_LEN,0);
if(len<=0)
{
perror("recv()");
close(sock_fd);
return ret;
}
for(i = 0;i< len; i++)
{
printf("%c",buf[i]);
}
printf("\n");
}
close(sock_fd);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment