我正在學習套接字編程...我試圖創建一個程序,在該程序中,我在客戶端屏幕上輸入了一個句子,並將其傳輸到服務器,然後出現在終端上服務器正在運行....代碼是here .....(看到這個問題的第一個答案後,我意識到我的錯誤,並改變了sockfd1在read()函數中,以接受並使用了fork() ()在server.cpp中...但仍編無效)客戶端和服務器示例不工作
在client.cpp早些時候,我用fgets(clibuff,100,標準輸入),並把這個和寫(sockcli,clibuff, strlen(clibuff))在一個無限循環中,但沒有奏效...
,所以我決定把它只是一個語句工作,除去在for循環....但是這也沒有工作...
當我在兩個不同的命令行運行這些他們都開始罰款(因爲兩個程序輸出0 x)...但當我在客戶端輸入任何東西,然後按回車...它不會出現在服務器窗口 ...代碼的相關部分是:
-------server.cpp-----
int sockfd1;
sockfd1=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
int x=bind(sockfd1, (sockaddr*)(&serv), sizeof(serv)); //serv is my sockaddr_in structure
cout<<x<<endl;
listen(sockfd1,5);
listen(sockfd1,5);
int y;
for(;;)
{
connfd=accept(sockfd1, &cliaddr, &siz);
if((y=read(sockfd1, servbuff, 100))>0) //i changed sockfd1 here to connfd
fputs(servbuff, stdout);
}
-----client.cpp------
char clibuff[100];
char line[100];
sockaddr_in cli;
bzero(&cli, sizeof(cli));
cli.sin_family=AF_INET;
inet_aton("127.0.0.1", &(cli.sin_addr));
cli.sin_port=htons(2289);
int sockcli;
sockcli=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
int x= connect(sockcli,(sockaddr*)&cli, sizeof(cli));
cout<<x<<endl;
cin>>clibuff;
write(sockcli, clibuff, strlen(clibuff));
return 0;
我到底做錯了什麼?
請在您的問題中內嵌您的代碼的相關部分。沒有這一點,只要該鏈接失效,你的問題對任何人都有價值。 – Mat 2012-04-21 17:55:00
@Mat + 1'cos我附上你的評論給我的嘗試,讓它發生。 – 2012-04-21 18:30:26
加fflush(stdout);後fputs()它 – Corwin 2012-04-22 19:35:21