vc++实现的tcp socket客户端和服务端示例

 更新时间:2014年03月04日 16:45:00   作者:  
这篇文章主要介绍了vc++实现的tcp socket客户端和服务端示例,需要的朋友可以参考下

Tcp Server

复制代码 代码如下:

#include <WinSock2.h>
#include <stdio.h>

#pragma comment(lib, "ws2_32.lib")

int main()
{
 // initial socket library
 WORD wVerisonRequested;
 WSADATA wsaData;
 int err;
 wVerisonRequested = MAKEWORD(1, 1);
 err = WSAStartup(wVerisonRequested, &wsaData);
 if (err != 0)
 {
  return -1;
 }
 //if (LOBYTE(wsaData.wVersion) != 1 ||
 // HIBYTE(wsaData.wHighVersion) != 1)
 //{
 // WSACleanup();
 // return -1;
 //}

 // create socket
 SOCKET sockServer = socket(AF_INET, SOCK_STREAM, 0);

 // bind socket
 SOCKADDR_IN addrServer;
 addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
 addrServer.sin_family = AF_INET;
 addrServer.sin_port = htons(6000);
 bind(sockServer, (SOCKADDR *)&addrServer, sizeof(addrServer));

 // listen
 listen(sockServer, 5);

 SOCKADDR_IN addrClient;
 int len = sizeof(addrClient);
 while(1)
 {
  // accept
  SOCKET sockConnection = accept(sockServer, (SOCKADDR *)&addrClient, &len);

  // send
  char sendBuf[100];
  sprintf(sendBuf, "Welcome %s", inet_ntoa(addrClient.sin_addr));
  send(sockConnection, sendBuf, strlen(sendBuf)+1,0);

  // receive
  char recvBuf[100];
  recv(sockConnection, recvBuf, 100, 0);

  //
  printf("%s", recvBuf);

  // close connection socket
  closesocket(sockConnection);
 }

}

Tcp Client

复制代码 代码如下:

#include <WinSock2.h>
#include <stdio.h>

#pragma comment(lib, "ws2_32.lib")

int main()
{
 // initial socket library
 WORD wVerisonRequested;
 WSADATA wsaData;
 int err;
 wVerisonRequested = MAKEWORD(1, 1);
 err = WSAStartup(wVerisonRequested, &wsaData);
 if (err != 0)
 {
  return -1;
 }
 //if (LOBYTE(wsaData.wVersion) != 1 ||
 // HIBYTE(wsaData.wHighVersion) != 1)
 //{
 // WSACleanup();
 // return -1;
 //}

 // create socket
 SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);

 // connect server socket
 SOCKADDR_IN addrServer;
 addrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
 addrServer.sin_family = AF_INET;
 addrServer.sin_port = htons(6000);
 connect(sockClient, (SOCKADDR *)&addrServer, sizeof(addrServer));

 // receive
 char recvBuf[100];
 recv(sockClient, recvBuf, 100, 0);

 //
 printf("%s", recvBuf);

 // send
 char sendBuf[100] = "this is lisi\n";
 send(sockClient, sendBuf, strlen(sendBuf)+1,0);

 // close connection socket
 closesocket(sockClient);

 // clean socket library
 WSACleanup();
}

相关文章

  • C语言中程序如何调用Python脚本

    C语言中程序如何调用Python脚本

    由于python有很多功能强大的开源库,有时候在写C语言程序的时候又想利用一下python强大的模块,那么C语言中程序如何调用Python脚本,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • c++动态规划经典算法

    c++动态规划经典算法

    动态规划算法通常用于求解具有某种最优性质的问题。本文主要介绍了c++动态规划经典算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • C++ 汉诺塔问题知识点总结

    C++ 汉诺塔问题知识点总结

    在本篇文章里小编给大家整理的是关于C++ 汉诺塔问题知识点内容,有需要的朋友们可以参考下。
    2020-02-02
  • C++中atof 函数的介绍

    C++中atof 函数的介绍

    这篇文章主要给大家分享的是C++中atof 函数的介绍,在 stdlib.h 中 atof 函数,可用于将 char 字符串转为 float / double 浮点数类型,想具体了解语法的小伙伴可以参考下面文章的内容,希望对大家有所帮助
    2021-11-11
  • C语言实现弹跳小球项目

    C语言实现弹跳小球项目

    这篇文章主要为大家详细介绍了C语言实现弹跳小球项目,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C++设置事件通知线程工作的方法

    C++设置事件通知线程工作的方法

    这篇文章主要介绍了C++设置事件通知线程工作的方法,是Windows应用程序设计中非常实用的技巧,需要的朋友可以参考下
    2014-10-10
  • 如何解决C语言,函数名与宏冲突

    如何解决C语言,函数名与宏冲突

    本文介绍了“如何解决C语言,函数名与宏冲突”,需要的朋友可以参考一下
    2013-03-03
  • 解决了个困扰了2天的问题,定点运算问题

    解决了个困扰了2天的问题,定点运算问题

    本文主要讲解定点运算问题,需要的朋友可以参考一下。
    2016-06-06
  • C++面向对象多级菜单向Arduino的移植问题小结

    C++面向对象多级菜单向Arduino的移植问题小结

    这篇文章主要介绍了C++面向对象多级菜单向Arduino的移植问题及实现思路,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • 希尔排序算法的C语言实现示例

    希尔排序算法的C语言实现示例

    这篇文章主要介绍了希尔排序算法的C语言实现示例,希尔排序可以看作为一种高级的插入排序,需要的朋友可以参考下
    2016-04-04

最新评论