C语言学习日记(yzy):socket(TCP)网络连接


在学习socket之前,需要了解socket连接的流程和结构,简单介绍一下流程:首先:创建套接字socketServer  - ->  绑定端口bind() - -> 监听套接字,阻塞等待客户端的连接,

然后客户端也创建套接字socketClient - -> 设置connect()方法 - -> 接着客户端和服务器可进行读写操作来传送信息,方法为recv()和send()。

在socket开发中WSA(WEB SERVER API )是非常重要的API。

以服务器为例子


首先,初始化WSA:int WSAStartup(WORD,&WSADATA)--> WORD(version = MAKEWORD(1,1)) ,WSADATA(wsaData),WSAStartup == 0 时初始化成功

LOBYTE(wsaData.wVersion) ==1||HIBYTE(wsaData.wVersion)==1查找是否有可用的WinSock DLL 


SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0);创建套接字


SOCKADDR_IN  addrSrv 得作用为添加端口和地址 -->addrSrv.sin_addr.S_un.S_addr=inet_addr(IP);添加服务器IP地址,addrSrv.sin_family=AF_INET;地址协议族

,addrSrv.sin_port=htons(6000);设置端口地址

connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR))连接服务器//绑定端口,最后进行读写操作。recv(SOCKET S,char buf[](缓冲),int len(buf长

度),int flags(一般置零))send(SOCKET S,char buf[](缓冲),int len(buf长度),int flags(一般置零))


需要的头文件和库文件: <winsock2.h> ~ <stdio.h> ~ <string.h>  ~ ws2_32.lib

实例:socketClient.cpp:

void main()
{
WORD version = MAKEWORD(1,1);;
WSADATA wsaData;


SOCKET sockClient;
SOCKADDR_IN addrSrv;


char recvBuf[100];
char sendBuf[100];

if(WSAStartup(version,&wsaData) != 0){
printf("init the WSA fail");
return;
}


if(LOBYTE(wsaData.wVersion) !=1||HIBYTE(wsaData.wVersion)!=1){
printf("Lack the WinSock DLL");
//WSACleanup();
return;
}


sockClient = socket(AF_INET,SOCK_STREAM,0);//creat socket

addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port = htons(6000);

connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));


recv(sockClient,recvBuf,100,0);
printf("%s\n",recvBuf);
gets(sendBuf);
send(sockClient,sendBuf,sizeof(sendBuf),0);


}


end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值