TCP通信

简介:

C语言编写TCP通信,TCP服务器端代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "stdafx.h"  
#include <winsock2.h>  
#include <iostream>  
#pragma comment(lib,"ws2_32.lib")  
#define  PORT 9000  //对外服务端口  
   
using  namespace   std;  
   
int  _tmain( int  argc, _TCHAR* argv[])  
{  
     WSADATA wsaData={0};  
     int  iResutl = WSAStartup(0x0202,&wsaData);  
   
     SOCKET sock = socket(AF_INET,SOCK_STREAM,0);  
     if (sock == INVALID_SOCKET)  
     {  
         cout << "创建套接字失败!"  <<endl;  
     }  
   
     sockaddr_in sa     ={AF_INET};  
     sa.sin_port        = htons(PORT); //开放给放部的端口9000  
     sa.sin_addr.s_addr = 0;           //本机地址  
     int  n = bind(sock,(sockaddr*)&sa, sizeof (sa));  
     if (SOCKET_ERROR == n)  
     {  
         cout <<  "端口绑定失败!" <<endl;  
     }  
   
     listen(sock,10);  
     cout <<  "TCP服务器启动"  <<endl;  
     char  buff[1000]={0};  
   
     sockaddr_in form;  
     int  nlen =  sizeof (sockaddr_in);  
   
     SOCKET socka;  
     while ( socka = accept(sock,(sockaddr*)&form,&nlen))  
     {  
         int  nRet = 0;  
         while ((nRet=recv(socka,buff,1000,0))>0)  
         {  
             cout <<  "IP地址来自:"  << inet_ntoa(form.sin_addr) << "端口:" << 
             htons(form.sin_port) <<endl;  
             
             buff[nRet] = 0;  
             cout << buff << endl;  
               
             if (buff[0] ==  '#' )  
             {  
                 closesocket(socka);  
                 break ;  
             }  
         }  
         cout <<  "socka退出"  <<endl;  
     }  
       
       
     closesocket(sock);  
   
     return  0;  
}

使用MFC中的CSocket类实现TCP客户端,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "stdafx.h"  
#include <afxwin.h>  
#include <afxsock.h>  
#include <iostream>  
using  namespace  std;  
int  _tmain( int  argc, _TCHAR* argv[])  
{  
     //控制台中要加这一句,否则出错  
     if (!AfxWinInit(::GetModuleHandle(NULL),NULL,::GetCommandLine(),0))  
     {  
         return  FALSE;  
     }  
   
     AfxSocketInit(); //初始化Socket库  
   
     CSocket sock;  
     BOOL  ret = sock.Create(6890,SOCK_STREAM);  
     if (!ret)  
     {  
         cout <<  "Socket创建错误"  << WSAGetLastError() <<endl;  
     }  
       
     //TCP相比UDP增加了连接这一步  
     sockaddr_in to={AF_INET};  
     to.sin_addr.S_un.S_addr = inet_addr( "127.0.0.1" ); //服务器端IP  
     to.sin_port             = htons(9000); //服务器端口  
     bool  n = sock.Connect((sockaddr*)&to, sizeof (to));  
     if (!n)  
     {  
         cout <<  "连接失败!"  <<endl;  
     }  
   
     char  buff[1000]={ "hello123" };  
     sock.Send(buff, strlen (buff),0);  
   
     getchar ();  
   
     return  0;  
}













本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/1968691  ,如需转载请自行联系原作者


相关文章
|
网络协议 物联网 开发者
NB-IoT 通信之 TCP 收发数据 | 学习笔记
快速学习 NB-IoT 通信之 TCP 收发数据
NB-IoT 通信之 TCP 收发数据 | 学习笔记
|
6月前
|
网络协议 安全 网络安全
网络编程:基于socket的TCP/IP通信。
网络编程:基于socket的TCP/IP通信。
339 0
|
8月前
|
网络协议 安全 Java
Java网络编程入门涉及TCP/IP协议理解与Socket通信。
【6月更文挑战第21天】Java网络编程入门涉及TCP/IP协议理解与Socket通信。TCP/IP协议包括应用层、传输层、网络层和数据链路层。使用Java的`ServerSocket`和`Socket`类,服务器监听端口,接受客户端连接,而客户端连接指定服务器并交换数据。基础示例展示如何创建服务器和发送消息。进阶可涉及多线程、NIO和安全传输。学习这些基础知识能助你构建网络应用。
64 1
|
网络协议
计算机通信地址【图解TCP/IP(笔记六)】
计算机通信地址【图解TCP/IP(笔记六)】
150 0
|
9月前
|
网络协议 安全 Java
Java网络编程入门指南:TCP/IP协议与Socket通信
Java网络编程入门指南:TCP/IP协议与Socket通信
175 1
|
SQL 网络协议 前端开发
🚀超级简单的图解TCP/IP,看不懂来打我:OSI模型与通信示例🚀
🚀超级简单的图解TCP/IP,看不懂来打我:OSI模型与通信示例🚀
|
存储 网络协议 前端开发
OSI参考模型通信处理例子【图解TCP/IP(笔记四)】
OSI参考模型通信处理例子【图解TCP/IP(笔记四)】
217 0
|
监控 网络协议 安全
一文了解HTTP、HTTPS、TCP、UDP、Websocket(论点:概念、通信流程、异同点、应用领域)
一文了解HTTP、HTTPS、TCP、UDP、Websocket(论点:概念、通信流程、异同点、应用领域)
|
网络协议
Netty实现TCP通信
Netty实现TCP通信
|
网络协议 Unix Linux
linux网络编程(三) TCP通信时序与多进程/线程并发服务器的编写
linux网络编程(三) TCP通信时序与多进程/线程并发服务器的编写
383 0
linux网络编程(三) TCP通信时序与多进程/线程并发服务器的编写

热门文章

最新文章