当前位置:  技术问答>linux和unix

套接字客户服务器的传输问题

    来源: 互联网  发布时间:2017-03-26

    本文导语:  客户程序代码·  include #include #include #include #include #include int main() {         int sockfd;         int len;         struct sockaddr_un address;         int result;         char ch='A';         sockfd=socket(AF_...

客户程序代码·
 
include
#include
#include
#include
#include
#include

int main()
{
        int sockfd;
        int len;
        struct sockaddr_un address;
        int result;
        char ch='A';

        sockfd=socket(AF_UNIX,SOCK_STREAM,0);
//给套接字命名
        address.sun_family=AF_UNIX;
        strcpy(address.sun_path,"server_socket");
        len=sizeof(address);

//将套接字连接到服务器
        result=connect(sockfd,(struct sockaddr*)&address,len);

        if(result==-1)
        {
                perror("oops:client1");
                exit(EXIT_FAILURE);
        }
//通过套接字进行读写
        write(sockfd,&ch,1);
        read(sockfd,&ch,1);
        printf("char form server =%cn",ch);
        close(sockfd);
        exit(EXIT_SUCCESS);

}



服务器程序代码:
#includeisys/types.h>
#include
#include
#include
#include
#include

int main()
{
        int server_sockfd, client_sockfd;
        int server_len,client_len;
        struct sockaddr_un server_address;
        struct sockaddr_un client_address;

//删除以前的套接字,为服务器创建一个未命名的套接字
        unlink("server_socket");
        server_sockfd=socket(AF_UNIX,SOCK_STREAM,0);

//命名套接字
        server_address.sun_family=AF_UNIX;
        strcpy(server_address.sun_path,"server_socket");
        server_len=sizeof(server_address);
        bind(server_sockfd,(struct address*)&server_address,server_len);


        listen(server_sockfd,5);
        while(1)
        {
                char ch;
                printf("server waitingn");
//接受一个请求
                client_len=sizeof(client_address);
                client_sockfd=accept(server_sockfd,(structsockaddr*)&client_address,&client_len);
                read(client_sockfd,&ch,1);
                ch++;
                write(client_sockfd,&ch,1);
                close(client_sockfd);
        }
        exit(EXIT_SUCCESS);
}
                                                            

 



客服程序 通过  套接字 写入一个字符A  服务器程序返回字符B

我想问的是 关于客服程序中的 write()和read()
客服程序向通过套接字写入字符后又立刻读取,怎么确定读取的一定是 服务器已经处理过的呢··
这之间有什么机制么,还是阻塞了直到服务器讲处理后的字符返回。

本人新手  希望可以解释的清楚点

|
客户端写完一个字符后执行read(sockfd,&ch,1);这一句是会阻塞,直到读到从服务器端的返回或出错为止,通过判断函数的返回值确定是成功读取还是出错了,修改如下:
if(read(sockfd,&ch,1) 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

Web服务器/前端 iis7站长之家