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
,如需转载请自行联系原作者