分享

socket套接字TCP编程实例

 海漩涡 2014-08-30

/// -------------->client
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#include <arpa/inet.h>

#include <unistd.h>

#define ERROR -1
#define OK    1

int main(int argc, char *argv[])
{
    int c_fd;
int len;
char buf[1024]={"tanhuifang"};
unsigned short port = 0x8888;
struct sockaddr_in s_addr;
    int sizeSockaddr = sizeof(struct sockaddr_in);

/// @brief 创建套接字
bzero(&s_addr,sizeSockaddr);
s_addr.sin_family = AF_INET;
s_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
s_addr.sin_port = htons(port);
if(-1 == (c_fd = socket(AF_INET, SOCK_STREAM, 0)) )
{
        fprintf(stdout,"socket fail\n");
return ERROR;
}

/// @brief 连接
if(-1 == connect(c_fd,(struct sockaddr *)(&s_addr),sizeSockaddr) )
{
        fprintf(stdout,"socket fail\n");
return ERROR;
}
else
{  
   fprintf(stdout,"IP:%#x\tport:%#x\n",ntohl(s_addr.sin_addr.s_addr),s_addr.sin_port);
   while(1)
   {
       if(-1 == (len = write(c_fd,buf,sizeof(buf)) ))
       {
           fprintf(stdout,"write fail\n");
return ERROR;
}
else
{
           fprintf(stdout,"send success!!!\n%d\n%s\n",len,buf);
}
sleep(2);
   }
}
 
    return OK;
}


#####################################################################

/// --------------------------->server
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#include <unistd.h>

#define ERROR -1
#define OK    0

int main(int argc, char *argv[])
{
    int s_fd,c_fd;
int len;
unsigned short port = 0x8888;
char buf[1024];
struct sockaddr_in s_addr,c_addr;
int sizeSockaddr = sizeof(struct sockaddr_in );

    /// @brief 创建套接字
if(-1 == (s_fd = socket(AF_INET, SOCK_STREAM, 0)) )
{
        fprintf(stdout,"socket fail !\n");
return ERROR;
}

    /// @brief 绑定
bzero(&s_addr, sizeSockaddr);
s_addr.sin_family = AF_INET;
s_addr.sin_addr.s_addr = htonl(INADDR_ANY);
s_addr.sin_port = htons(port);
if(-1 == bind(s_fd,(struct sockaddr *)(&s_addr),sizeof(struct sockaddr)))
{
        fprintf(stdout,"bind socket fail !\n");
return ERROR;
}

/// @brief 监听
if(-1 == listen(s_fd,10))
{
        fprintf(stdout,"listen socket fail !\n");
return ERROR;
}

if(-1 == (c_fd = accept(s_fd,(struct sockaddr *)(&c_addr),(socklen_t*)&sizeSockaddr)))
    {
        fprintf(stdout,"accept socket fail !\n");
return ERROR;
}
    ///fprintf(stdout,"welcom IP:%d port:%x",c_addr.sin_addr.s_addr,c_addr.sin_port)
fprintf(stdout,"welcom $$$$$\n");
while(1)
{
  memset(buf,0,1024);
       if(-1 == (len = read(c_fd,buf,1024)) )
       {
           fprintf(stdout,"read fail!!!\n");
  return ERROR;
  }
  else if(len > 0)
  {
  buf[len]='\0';
  fprintf(stdout,"I have recv:%d--%s\n",len,buf);
  }
  else
  {
           fprintf(stdout,"what happend!!!\nlen[%d]\n",len);
  }
    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多