您的位置:首页 > 理论基础 > 计算机网络

linux下简单网络编程

2011-03-26 21:53 357 查看
编写网络程序一般分为客户程序和服务程序,主要有TCP和UPD两个协议,TCP服务程序的主要流程有socket()->bind()->listen()->accept()->对数据的操作,客户程序主要是socket()->connect()->对数据的操作,在编写程序时可通过函数的返回值判断是哪一步出了问题,问题便可解决。对于UPD流程没什么问题,主要步骤都差不多。

service:

#include<sys/wait.h>

#define SOCKETPORT 2222

#define SOCKETNUM 10

int main(int argc,char **argv)

{

struct sockaddr_in serv,clien;

int sockfd;

char buffer[100];

sockfd=socket(AF_INET,SOCK_STREAM,0);

serv.sin_family=AF_INET;

serv.sin_port=htons(SOCKETPORT);

serv.sin_addr.s_addr=htonl(INADDR_ANY);

bind(sockfd,(struct sockaddr *)&serv,sizeof(struct sockaddr_in));

listen(sockfd,10);

while(1)

{

int sin_size=sizeof(struct sockaddr_in);

int fd=accept(sockfd,(struct sockaddr *)&clien,&sin_size);

if(fd==-1)printf("dgdgd/n");

printf("recevied a connetion form %s/n",inet_ntoa(clien.sin_addr));

if(send(fd,"hello,you are connected !/n",26,0)==-1)

printf("error");

//recv(fd,buffer,sizeof(buffer),0);

//printf("%s/n",buffer);

}

return 0;

}

client:

#include<stdio.h>

#include<stdlib.h>

#include<errno.h>

#include<string.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<sys/socket.h>

#include<sys/wait.h>

#define SOCKETPORT 2222

#define SOCKETNUM 10

int main(int argc,char **argv)

{

struct sockaddr_in serv;

int sockfd;

char buffer[100];

sockfd=socket(AF_INET,SOCK_STREAM,0);

serv.sin_family=AF_INET;

serv.sin_port=htons(SOCKETPORT);

serv.sin_addr.s_addr=inet_addr(argv[1]);

int clientfd=connect(sockfd,(struct sockaddr *)&serv,sizeof(struct sockaddr));

//send(sockfd,"hello,you are connected! /n",26,0);

recv(sockfd,buffer,100,0);

printf("%s/n",buffer);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: