1. 程式人生 > >linux網絡通信

linux網絡通信

from 初始 har set %d list print size 維護

很老了的代碼了,呵呵 最近在復習呢

//server
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>


typedef struct sockaddr SA;
int main(int argc,char **argv)
{
    
int listenfd; //也是以文件為操作,linux都是以文件為基礎 int confd; socklen_t clilen; struct sockaddr_in myaddr,cliaddr; char buf[50] = "Welcome"; listenfd = socket(PF_INET,SOCK_STREAM,0) if(listenfd<0) { perror("fail to connect"); exit(-1); } //數據初始化 bzero(&myaddr,sizeof
(myaddr)); myaddr.sin_family = PF_INET; myaddr.sin_addr.s_addr = inet_addr("192.168.1.1"); //ip myaddr.sin_port = htons(8888); //端口號 //綁定? 為什麽要強制轉換? if(bind(listenfd,(SA *)&myaddr,sizeof(myaddr))<0) { perror("fail to bind"); exit(-1); } listen(listenfd,5
); while(1) { confd = accept(listenfd,(SA *)&cliaddr,sizeof(cliaddr)); printf("connection from %s,port %d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port)); send(connfd,buf,sizeof(buf),0); close(connfd); } return 0; }
//client

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>


typedef struct sockaddr SA;
int main(int argc,char **argv)
{
    int sockfd,nbyte;
    struct sockaddr_in servaddr,myaddr;
    char buf[50];

    sockfd = socket(PF_INET,SOCK_STREAM,0);
    if(sockfd<0)
    {
        perror("fail to connect\n");
        exit(-1);
    }

    memset(0,&servaddr,sizeof(servaddr));
    servaddr.sin_family = PE_INET;
    servaddr.sin_addr.s_addr = inet_addr("192.168.1.1");  //server ip
    servaddr.sin_port = htons(8888);

    if(connect(sockfd,(SA *)&servaddr,sizeof(servaddr))<0)
    {
        perror("connect error");
        exit(-1);
    }

    if((nbyte = recv(sockfd,buf,50,0))<0)
    {
        perror("fail to recv");
        exit(-1);
    }

    printf("recv from server:%s\n", buf);

    return 0;
}

主要就是一個結構體

struct sockaddr_in 
以及幾個函數的操作,對於超時網絡異常等需要有異常的維護

linux網絡通信