TCP通信客户端简单示例
#include <stdio.h>
#include <winsock.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
//第一步:初始化Socket函数库
WSADATA wsaData;
WSAStartup(0x202,&wsaData);
//第二步:创建流式套接字
SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
/*
//第三步:绑定地址(显式绑定),可选的
//如果不显式绑定地址或显式绑定失败,在调用connect函数时系统会自动随机选择一个空闲的端口号给我们绑定,系统的绑定称为隐式绑定
sockaddr_in myaddr;
myaddr.sin_family=AF_INET;
myaddr.sin_addr.s_addr=INADDR_ANY;
myaddr.sin_port=htons(9999);
if(SOCKET_ERROR==bind(sock,(sockaddr*)&myaddr,sizeof(myaddr)))
{
printf("绑定地址失败!\n");
return 1;
}
*/
//第四步:连接服务器
//指定服务器端的地址
sockaddr_in addrSrv;
addrSrv.sin_family=AF_INET;
addrSrv.sin_addr.s_addr=inet_addr("127.1.3.5");
addrSrv.sin_port=htons(8888);
//连接服务器
if(SOCKET_ERROR==connect(sock,(sockaddr*)&addrSrv,sizeof(addrSrv)))
{
printf("连接服务器失败!\n");
return 1;
}
//第五步:收发数据
char szMsg[1024]="";
recv(sock,szMsg,sizeof(szMsg)-1,0);
printf("服务器端说:%s\n",szMsg);
strcpy(szMsg,"hello too!");
send(sock,szMsg,strlen(szMsg),0);
//第六步:关闭套接字,即断开连接
closesocket(sock);
return 0;
}
#include <winsock.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
//第一步:初始化Socket函数库
WSADATA wsaData;
WSAStartup(0x202,&wsaData);
//第二步:创建流式套接字
SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
/*
//第三步:绑定地址(显式绑定),可选的
//如果不显式绑定地址或显式绑定失败,在调用connect函数时系统会自动随机选择一个空闲的端口号给我们绑定,系统的绑定称为隐式绑定
sockaddr_in myaddr;
myaddr.sin_family=AF_INET;
myaddr.sin_addr.s_addr=INADDR_ANY;
myaddr.sin_port=htons(9999);
if(SOCKET_ERROR==bind(sock,(sockaddr*)&myaddr,sizeof(myaddr)))
{
printf("绑定地址失败!\n");
return 1;
}
*/
//第四步:连接服务器
//指定服务器端的地址
sockaddr_in addrSrv;
addrSrv.sin_family=AF_INET;
addrSrv.sin_addr.s_addr=inet_addr("127.1.3.5");
addrSrv.sin_port=htons(8888);
//连接服务器
if(SOCKET_ERROR==connect(sock,(sockaddr*)&addrSrv,sizeof(addrSrv)))
{
printf("连接服务器失败!\n");
return 1;
}
//第五步:收发数据
char szMsg[1024]="";
recv(sock,szMsg,sizeof(szMsg)-1,0);
printf("服务器端说:%s\n",szMsg);
strcpy(szMsg,"hello too!");
send(sock,szMsg,strlen(szMsg),0);
//第六步:关闭套接字,即断开连接
closesocket(sock);
return 0;
}
Do one thing at a time,and do well.