我的第一個linux網路程式設計
寫第一個linux網路程式設計的時候碰到了不少的問題,即使你在網上找到的程式碼原封不動的複製到你的Linux上也會出現各種問題。沒辦法,自己啃吧!然後今天成功的運行了一個Linux的程式,並分享給大家,希望對你我他有幫助。這個程式是unix網路程式設計一書上的第一個程式,我對它按照自己的理解進行了部分修改。
程式碼:
#include< iostream>
#include<string.h>
#include< cstdlib>
#include< cstdio>
#include< cerrno>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netinet/ip.h>
#include<arpa/inet.h>
using namespace std;
int main(int argc,char ** argv)
{
int sockfd,n;
char recvline[1025];
struct sockaddr_in seraddr;
if(argc!=2) //if the parameter the order is not equal with 2,start the next orders
{
printf(“usage:./a.out< IPaddress>”);
}
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{
fputs(“hello world”,stderr);
exit(0);
}
bzero(&seraddr,sizeof(seraddr));
seraddr.sin_port=htons(22);
seraddr.sin_family=AF_INET;
if(inet_pton(AF_INET,argv[1],&seraddr.sin_addr)<=0)
{
cout<<"inet_pton err "<<endl;
exit(0);
}
if((connect(sockfd,(struct sockaddr*)&seraddr,sizeof(seraddr)))<0)
{
cout<<“connect failed!”<<endl;
exit(0);
}
while((n=read(sockfd,recvline,1024)) >0)
{
recvline[n]=’\0’;
if(fputs(recvline,stdout)==EOF)
{
cout<<“fputs err”<<endl;
exit(0);
}
}
if(n<0)
{
cout<<“read err”<<endl;
exit(0);
}
close(sockfd);
return 0;
}
問題一: