#include <stdio.h>
#include <winsock2.h>//使用socket库
#pragma comment (lib,"ws2_32.lib")//链接到系统动态库中
#define PORT 5050
#define BUF_SIZE 20
int main() {
WSADATA wsa;
SOCKET dataSock; //数据套接字
SOCKADDR_IN serAddr; //定义internet通用地址域类型------serAddr是服务器端地址
int addrLen = sizeof(sockaddr);
int ret;
char sendBuf[BUF_SIZE];
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
printf("start up dll failed!=%d", WSAGetLastError());
return -1;
}
//1、建立socket
dataSock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==dataSock)
{
printf("socket failed%d\n",WSAGetLastError);
WSACleanup();
return -1;
}
//2、连接connect
serAddr.sin_family=AF_INET;
serAddr.sin_port=htons(PORT);
//inet_addr("ip地址")转换成网络字节序的长整型,htonl(INADDR_ANY)没有必要使用
serAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
if (SOCKET_ERROR==connect(dataSock,(sockaddr*)&serAddr, addrLen))
{
printf("connect failed %d\n",WSAGetLastError);
closesocket(dataSock);
WSACleanup();
return -1;
}
//3、send
while(true){
printf("input:");
memset(sendBuf,0,BUF_SIZE);
scanf("%s",sendBuf);
ret=send(dataSock,sendBuf,strlen(sendBuf)+1,0);//加一的原因是因为服务器那的\0
if(strcmp(sendBuf,"byebye")==0)
{
closesocket(dataSock);
WSACleanup();
}
else
{
printf("send success!!");
}
}
return 0;
}
实验结果(结合上一个TCP连接服务器端的程序,先打开服务器运行起来,之后运行客户机端进行connect)
版权声明:本文为m0_46701481原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。