基于C++的socket通信实例

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

刚刚学windows编程,所以想写学习笔记,这是一个简单的Socket 程序例子,开发环境是vc6:

首先是TCP

server端:

[cpp]view plaincopy

1.#include "stdafx.h"

2.#include

3.#include

4.

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

6.

7.int main(int argc, char* argv[])

8.{

9.//初始化WSA

10.WORD sockVersion = MAKEWORD(2,2);

11. WSADATA wsaData;

12.if(WSAStartup(sockVersion, &wsaData)!=0)

13. {

14.return 0;

15. }

16.

17.//创建套接字

18. SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

19.if(slisten == INVALID_SOCKET)

20. {

21. printf("socket error !");

22.return 0;

23. }

24.

25.//绑定IP和端口

26. sockaddr_in sin;

27. sin.sin_family = AF_INET;

28. sin.sin_port = htons(8888);

29. sin.sin_addr.S_un.S_addr = INADDR_ANY;

30.if(bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)

31. {

32. printf("bind error !");

33. }

34.

35.//开始监听

36.if(listen(slisten, 5) == SOCKET_ERROR)

37. {

38. printf("listen error !");

39.return 0;

40. }

41.

42.//循环接收数据

43. SOCKET sClient;

44. sockaddr_in remoteAddr;

45.int nAddrlen = sizeof(remoteAddr);

46.char revData[255];

47.while (true)

48. {

49. printf("等待连接...\n");

50. sClient = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen);

51.if(sClient == INVALID_SOCKET)

52. {

53. printf("accept error !");

54.continue;

55. }

56. printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));

57.

58.//接收数据

59.int ret = recv(sClient, revData, 255, 0);

60.if(ret > 0)

61. {

62. revData[ret] = 0x00;

63. printf(revData);

64. }

65.

66.//发送数据

67.char * sendData = "你好,TCP客户端!\n";

68. send(sClient, sendData, strlen(sendData), 0);

69. closesocket(sClient);

70. }

71.

72. closesocket(slisten);

73. WSACleanup();

74.return 0;

75.}

client端:

[cpp]view plaincopy

1.#include "stdafx.h"

2.#include

3.#include

4.

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

6.

7.

8.int main(int argc, char* argv[])

9.{

10.WORD sockVersion = MAKEWORD(2,2);

11. WSADATA data;

12.if(WSAStartup(sockVersion, &data) != 0)

13. {

14.return 0;

15. }

16.

17. SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

18.if(sclient == INVALID_SOCKET)

19. {

20. printf("invalid socket !");

21.return 0;

22. }

23.

24. sockaddr_in serAddr;

25. serAddr.sin_family = AF_INET;

26. serAddr.sin_port = htons(8888);

27. serAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

28.if (connect(sclient, (sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ER

ROR)

29. {

30. printf("connect error !");

31. closesocket(sclient);

32.return 0;

33. }

34.char * sendData = "你好,TCP服务端,我是客户端!\n";

35. send(sclient, sendData, strlen(sendData), 0);

36.

37.char recData[255];

38.int ret = recv(sclient, recData, 255, 0);

相关文档
最新文档