打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
socket套接字TCP编程实例

/// -------------->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);
  }
    }
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[ 永远的UNIX > Linux网络编程--2. 初等网络函数介绍(TCP) ]
linux 编程
利用socket传输图片或文件的代码实例
自己动手用c语言写一个基于服务器和客户端(TCP)
Windows Socket API 使用经验 - 技术文档 - VC文档 - 网络通讯 - 立华软件园
Linux环境下的Socket编程 - C&C - Linux技术中坚站
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服