tcp socket客户端和服务端示例分享

 更新时间:2014年03月11日 14:59:56   作者:  
这篇文章主要介绍了tcp socket客户端和服务端示例,需要的朋友可以参考下

以下是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++之多态(内容不错)

    C++之多态(内容不错)

    什么是多态?顾名思义就是同一个事物在不同场景下的多种形态,需要的朋友可以参考下
    2020-01-01
  • C语言二叉树的非递归遍历实例分析

    C语言二叉树的非递归遍历实例分析

    这篇文章主要介绍了C语言二叉树的非递归遍历,包括了先序遍历、中序遍历与后序遍历,需要的朋友可以参考下
    2014-09-09
  • Qt+QWidget实现简约美观的加载动画

    Qt+QWidget实现简约美观的加载动画

    这篇文章主要为大家详细介绍了Qt如何结合QWidget实现简约美观的加载动画,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • 详解C语言#define预处理宏定义

    详解C语言#define预处理宏定义

    本文主要介绍了C语言#define预处理宏定义,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • QT中在QLabel显示图片并且利用鼠标点击画线问题

    QT中在QLabel显示图片并且利用鼠标点击画线问题

    这篇文章主要介绍了QT中在QLabel显示图片并且利用鼠标点击画线问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 基于c++ ege图形库实现五子棋游戏

    基于c++ ege图形库实现五子棋游戏

    这篇文章主要为大家详细介绍了基于c++ ege图形库实现五子棋游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • C++插件化 NDD源码的插件机制实现解析

    C++插件化 NDD源码的插件机制实现解析

    这篇文章主要介绍了C++插件化 NDD源码的插件机制实现解析,这里再介绍推荐下优秀的国产软件开源项目 NDD(notepad--),一个支持windows/linux/mac的文本编辑器,目标是要国产替换同类软件,需要的朋友可以参考下
    2023-03-03
  • C++利用std::forward_list查找插入数据方法示例

    C++利用std::forward_list查找插入数据方法示例

    这篇文章主要给大家介绍了关于C++利用std::forward_list查找插入数据的相关资料,文中先对std::forward_list进行了详细的介绍,而后通过示例代码给大家介绍了查找的方法,需要的朋友可以参考借鉴,下面话不多说了,来一起看看吧。
    2017-08-08
  • C++基于消息队列的多线程实现示例代码

    C++基于消息队列的多线程实现示例代码

    这篇文章主要给大家介绍了关于C++基于消息队列的多线程实现的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • Qt自定义控件实现进度仪表盘

    Qt自定义控件实现进度仪表盘

    这篇文章主要介绍了Qt自定义控件实现进度仪表盘,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12

最新评论