最簡單的socket服務器與客戶端


服務器:

//服務器
#include <stdio.h>
#include <netinet/in.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <errno.h>
#include <string.h>
int main()
{   
    int listenFd = socket (AF_INET,SOCK_STREAM,0);//創建套接字
    
    struct sockaddr_in serverAddr,clientAddr;//保存網絡地址信息的結構體
    memset (&serverAddr,0,sizeof(serverAddr));
    serverAddr.sin_family = AF_INET;//協議族/地址族
    serverAddr.sin_port = htons(atoi("8080"));//保存端口號 atoi(字符串->整形"8080"->8080)
    serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");//IP地址
    
    //綁定本地地址和端口
    int ret = bind (listenFd,(struct sockaddr*)&serverAddr,sizeof(serverAddr));
    ret = listen(listenFd,100);//監聽

  int clientFd;
    int cliLen = sizeof (clientAddr);
  while(1){
      clientFd = accept(listenFd,(struct sockaddr*)&clientAddr,&cliLen);
      char buff[1024] = {0};
      ret = read(clientFd,buff,1024);//接收數據,阻塞
     printf ("recv a msg:%s\n",buff);
    close (clientFd);
  }
    close (listenFd);
    return 0;
}

 

客戶端:

//客戶端
#include <stdio.h>
#include <netinet/in.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <errno.h>
#include <string.h>

int main()
{
    int fd = socket(AF_INET,SOCK_STREAM,0);//創建套接字
//鏈接服務器 struct sockaddr_in serverAddr; memset (&serverAddr,0,sizeof(serverAddr)); serverAddr.sin_family = AF_INET;//協議族 serverAddr.sin_port = htons(atoi("8080"));//端口號 serverAddr.sin_addr.s_addr = inet_addr ("127.0.0.1");//IP地址 int ret = connect(fd,(struct sockaddr*)&serverAddr,sizeof(serverAddr)); // socket描述符, 服務器地址, socket結構體長度

char buff[1024]={0}; ret = read(0,buff,1024); ret = write(fd,buff,ret-1);//去掉回車 // printf ("send a msg :hello\n"); close(fd); return 0; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM