您的位置:首页 > 编程语言

socket编程api学习二客户端的编程

2017-08-20 18:48 281 查看

代码

#include <unistd.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <fcntl.h>

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <signal.h>
#include <arpa/inet.h>

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main()
{
int  sockfd = 0;
sockfd =  socket(PF_INET, SOCK_STREAM, 0);
if (sockfd == -1)
{
perror("fun socket\n");
exit(0);
}

struct sockaddr_in  srvaddr;
srvaddr.sin_family = AF_INET;
srvaddr.sin_port = htons(8001);
srvaddr.sin_addr.s_addr = inet_addr("192.168.6.249"); //127.0.0.1
//srvaddr.sin_addr.s_addr = inet_addr(INADDR_ANY); //绑定本机的任意一个地址

if ( connect(sockfd, (struct sockaddr*) (&srvaddr), sizeof(srvaddr)) < 0)
{
perror("fun socket\n");
exit(0);
}

char revbuf[1024] = {0};//接受数组
char sendbuf[1024] = {0};//发送数组
while (fgets(sendbuf, sizeof(sendbuf), stdin) != NULL)
{
//向服务写数据
write(sockfd, sendbuf, strlen(sendbuf)); //服务器端回发信息
//从服务器读数据
read(sockfd, revbuf, sizeof(revbuf));
fputs(revbuf, stdout); //从服务器收到数据,打印屏幕
memset(revbuf, 0, sizeof(revbuf));
memset(sendbuf, 0, sizeof(sendbuf));
}
close(sockfd);
return 0;
}


客户端和服务器不一样的地方他没有listen,accept,listen代码有把socket变成被动的接受放,accept我的理解就是一个客户端对应的一个连接id这样我们做服务器开发的时候便可以知道我们的客户端的状态。当然查看状态的可以直接用netstat -na | grep 端口号查看链接的状态。希望对大家的学习有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: