TCP客户端
#include <myhead.h>
#define PORT 8880 //端口号,范围1024-49151
#define IP "192.168.114.39" //本机IP,ifconfig
int main(int argc, const char *argv[])
{
//创建流式套接字 socket
int cfd; //定义服务器文件描述符
if((cfd = socket(AF_INET,SOCK_STREAM,0))<0)
{
ERR_MSG("socket");
return -1;
}
printf("socket create success cfd=%d\n",cfd);
//绑定客户端的地址信息---》非必要绑定
//当不手动绑定的时候,操作系统会自动给客户端绑定本机IP和随机端口
//填充服务器的地址信息结构体给connect函数连接
//真实的地址信息结构体根据地址族指定 AF_INET:man 7 ip
struct sockaddr_in sin;
sin.sin_family = AF_INET; //必须填AF_INET;
sin.sin_port = htons(PORT); //服务器绑定的端口号
sin.sin_addr.s_addr = inet_addr(IP); //服务器绑定的IP
//连接指定服务器 connect
if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))<0)
{
ERR_MSG("connect error");
return -1;
}
char buf[128];
int ret =0;
while(1)
{
//清空字符串
bzero(buf,sizeof(buf)); //memset
printf("请输入>>");
fgets(buf,sizeof(buf),stdin); //从终端获取字符串
buf[strlen(buf)-1] == '\0'; //将最后的'\n'替换成'\0'
//发送
if(send(cfd,buf,sizeof(buf),0)<0)
{
ERR_MSG("send error");
return -1;
}
printf("send success\n");
//清空字符串
bzero(buf,sizeof(buf));
//接收
if((ret = recv(cfd,buf,sizeof(buf),0))<0)
{
ERR_MSG("recv error");
return -1;
}
else if(ret ==0)
{
printf("服务器下线 cfd = %d\n",cfd);
break;
}
printf("%s\n",buf);
}
//关闭文件描述符
if(close(cfd)<0)
{
ERR_MSG("close");
return -1;
}
return 0;
}
UDP的客户端
#include <myhead.h>
#define PORT 9527 //端口号,范围1024-49151
#define IP "192.168.114.39" //机IP
int main(int argc, const char *argv[])
{
//创建报式套接字文件
int cfd;
if((cfd = socket(AF_INET,SOCK_DGRAM,0))<0)
{
ERR_MSG("socket create error");
return -1;
}
printf("socket create success cfd = %d\n",cfd);
struct sockaddr_in sin;
sin.sin_family = AF_INET; //协议族
sin.sin_port = htons(PORT); //本机字节序转网络字节序
sin.sin_addr.s_addr =inet_addr(IP); //本机IP
//定义一个搬运工
char buf[128] ="";
//目标地址
//发送数据的长度
socklen_t addrlen = sizeof(sin);
int ret =0;
while(1)
{
//清空字符串
bzero(buf,sizeof(buf));
printf("请输入>>>");
fgets(buf,sizeof(buf),stdin);
buf[strlen(buf)-1] =='\0';
//发送数据
if(sendto(cfd,buf,sizeof(buf),0,(struct sockaddr *)&sin,sizeof(sin))<0)
{
ERR_MSG("sendto error");
return -1;
}
printf("sendto success\n");
//接收数据
bzero(buf,sizeof(buf));
if(( ret = recvfrom(cfd,buf,sizeof(buf),0,(struct sockaddr *)&sin,&addrlen))<0)
{
ERR_MSG("recvfrom error");
return -1;
}
if(ret ==0)
{
printf("服务器下线cfd = %d\n",cfd);
}
printf("%s\n",buf);
}
//关闭套接字
close(cfd);
return 0;
}

博客主要提及了TCP客户端和UDP客户端相关内容,涉及网络编程方面知识,与信息技术领域紧密相关。
1443

被折叠的 条评论
为什么被折叠?



