linux下socket程式設計的原理大家參考下面這篇部落格:
我就不多介紹了,下面這是乙個小例子。
客戶端**:
#include #include #include #include #include #include #include #include #include #include #include int main()
; struct sockaddr_in servaddr;
fd=socket(af_inet,sock_stream,0);
if(fd<0)
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=af_inet;
if(inet_pton(af_inet,"192.168.7.92",&servaddr.sin_addr.s_addr)<=0)
servaddr.sin_port=9000;
ret=connect(fd,(struct sockaddr *)&servaddr,sizeof(servaddr));
if(ret < 0)
while(1)
ret=write(fd,buff,strlen(buff));
if(ret < 0)
if((ret=read(fd,buff,sizeof(buff)-1))<0)
if(ret == 0)
printf("the message is:%s",buff);
}failed:
close(fd);
return 0;
}
伺服器端:
#include #include #include #include #include #include #include #include #include #include #include int main()
; struct sockaddr_in servaddr,clivaddr;
int len=sizeof(clivaddr);
fd=socket(af_inet,sock_stream,0);
if(fd<0)
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=af_inet;
if(inet_pton(af_inet,"192.168.7.92",&servaddr.sin_addr.s_addr)<=0)
servaddr.sin_port=9000;
ret=bind(fd,(struct sockaddr *)&servaddr,sizeof(servaddr));
if(ret < 0 )
if((ret=listen(fd,10) != 0))
int nsock;
while(1)
else
//ret=connect(fd,(struct sockaddr *)&servaddr,sizeof(servaddr));
pid_t pid;
pid=fork();
if(pid == 0)
ret=write(nsock,buff,strlen(buff));
if(ret < 0)
}close(nsock);
exit(0);
} close(nsock);
}failed:
close(fd);
return 0;
}
執行時,首先執行伺服器,
在客戶端從鍵盤中迴圈讀入資料,然後回車輸出,
由於我用了fork()建立了子程序來處理接受的資料,所以就成了乙個乙個伺服器對多個客戶端,
可以同時執行多個伺服器來傳送資料。
程式執行結果:
我執行了兩個客戶端,可以同時收發資料。
Socket程序間通訊
int socket int domain,int type,int protocol int bind int sockfd,const struct sockaddr addr,socklen t addrlen struct sockaddr in internet address.struc...
QT 程序間通訊 Socket通訊
通過qt提供的qtnetwork模組即可實現程序間通訊,tcp ip在實現應用程式和程序內部通訊或與遠端程序間的通訊方面非常有用。qtnetwork模組提供的類能夠建立基於tcp ip的客戶端與服務端應用程式。為實現底層的網路訪問,可以使用qtcpsocket qtcpserver和qudpsock...
linux簡單程序間socket通訊
socket多用於網路通訊,但將服務位址設為本機位址之後,即可實現本機程序間socket通訊,利用socket可以在程序間方便地傳輸資料。在linux平台上還支援af unix通訊,而不必設定本機位址,這種socket通訊型別在windows平台上並不適用。下面模擬三個程序間利用socket通訊,s...