以下**在centos6.2測試通過
客戶端**如下:
#include #include #include #include #include #include #include using namespace std;
#define maxline 4096 /* max text line length */
int main(int argc, char ** argv)
if((sockfd=socket(af_inet, sock_stream, 0))<0)
memset(&serveraddr,0, sizeof(serveraddr));
serveraddr.sin_family = af_inet;
serveraddr.sin_port = htons(10000);
if(inet_pton(af_inet, argv[1], &serveraddr.sin_addr)<=0)
int tmp = connect(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
if(tmp <0)
while((n=read(sockfd, recvline, maxline)) > 0) }
if(n<0)
return 1;
}
伺服器端**如下:
#include // sockaddr head
#include //memset and strlen head
#include //socket listen bind
#include #include #include #define maxline 4096
#define listenq 1024
using namespace std;
int main(int argc, char ** argv)
{ int listenfd, connfd;
struct sockaddr_in servaddr;
char buff[maxline];
time_t ticks;
listenfd = socket(af_inet, sock_stream, 0);
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = af_inet;
servaddr.sin_addr.s_addr = htonl(inaddr_any);
servaddr.sin_port = htons(10000);
bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
int ret = listen(listenfd,listenq);
cout << "go to listen" <
執行緒同步 條件變數 unix網路程式設計
1.條件變數的概念 條件變數是一種機制,它允許執行緒等待某些事件的發生。幾個執行緒可以等待同乙個條件變數直到其他執行緒啟用該條件變數為止,這類似於傳送乙個通知。這時,可以是乙個執行緒被喚醒以響應這個事件,也可以是所有等待條件變數的執行緒。注意,條件變數本身並不提供 鎖 因此互斥鎖常伴隨條件變數的使用...
UNIX網路程式設計
在unix network programming 的 3.7 inet pton and inet ntop functions 中提到中有如下兩個巨集定義 define inet addrstrlen 16 for ipv4 dotted decimal define inet6 addrstr...
unix網路程式設計
任何tcp的實現都需要為msl選擇乙個合適的值,rfc的建議值是2分鐘。分組可能出現迷途,若迷途分組在msl中找到路,造成重複,tcp必須修復 time wait存在的理由 可靠的實現全雙工的連線和終止 考慮最終ack丟失的情況,允許老的重複分組在網路中消逝 tcp的化生身現象,因為time wai...