Linux一对一的通信

原创 2018年04月16日 21:08:38

服务端:

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

const int port = 8080;
const char* ip = "127.0.0.1"; 

int main()
{
      int ser_sock = socket(AF_INET, SOCK_STREAM, 0); 
      if(ser_sock < 0)
      {

          perror("socket");
          return 1;
      }
      struct sockaddr_in addr; 
      addr.sin_family = AF_INET; 
      addr.sin_port = htons(port); 

      addr.sin_addr.s_addr = inet_addr(ip); 
      if(bind(ser_sock, (struct sockaddr*)&addr, sizeof(addr)) < 0) 
      {             

           perror("bind"); 
           return 2;       
      } 


      int listen_sock = listen(ser_sock, 5);
      if(listen_sock < 0)
      {

          perror("listen");
          return 3;
      }


      struct sockaddr_in peer;
      socklen_t peer_len;
      char buf[1024];
      int accept_fd = accept(ser_sock, (struct sockaddr*)&peer, &peer_len);

      if(accept_fd < 0)
      {
          perror("accept");
          return 4;
      }
      else
      {
          printf("connected with ip: %s  and port: %d\n", inet_ntop(AF_INET,&peer.sin_addr, buf, 1024), ntohs(peer.sin_port));

      }

      while(1)
      {
          memset(buf, '\0', sizeof(buf));
          ssize_t size = read(accept_fd, buf, sizeof(buf) - 1);

          if(size > 0)
          {
              printf("client#: %s\n", buf);
          }
          else if(size == 0)
          {
              printf("read is done...\n");
              break;
          }
          else 
          {
              perror("read");
              break;
          }
          printf("server please enter: ");
          fflush(stdout);
          size = read(0, buf, sizeof(buf) - 1);
          if(size > 0)
          {
              buf[size - 1] = '\0';
          }
          else if(size == 0)
          {
              printf("read is done...\n");
              break;
          }
          else
          {
              perror("read");
              break;
          }   
          write(accept_fd, buf, strlen(buf));
      }
        close(ser_sock);
      return 0;
}
`

 ``客户端:



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

const int port = 8080;
const char* ip = "127.0.0.1"; 

int main()
{

      int clt_sock = socket(AF_INET, SOCK_STREAM, 0); 
      if(clt_sock < 0)
      {

          perror("socket");
          return 1;
      }


      struct sockaddr_in addr; 
      addr.sin_family = AF_INET; 
      addr.sin_port = htons(port); 

      addr.sin_addr.s_addr = inet_addr(ip); 



      socklen_t addr_len = sizeof(addr);
      int connect_fd = connect(clt_sock, (struct sockaddr*)&addr, addr_len);
      if(connect_fd < 0)
      {
          perror("connect");
          return 2;
      }
      char buf[1024];

      while(1)
      {
          memset(buf, '\0', sizeof(buf));
          printf("client please enter: ");
          fflush(stdout);
          ssize_t size = read(0, buf, sizeof(buf) - 1);
          if(size > 0)
          {
              buf[size - 1] = '\0';
          }
          else if(size == 0)
          {
              printf("read is done...\n");
              break;
          }
          else
          {
              perror("read");
              return 4;
          }

          write(clt_sock, buf, strlen(buf));
          size = read(clt_sock, buf, sizeof(buf));
          if(size > 0)
          {
              buf[size] = '\0';
          }
          else if(size == 0)
          {
              printf("read is done...\n");
              break;
          }
          else 
          {
              perror("read");
              return 5;
          }
          printf("server: %s\n", buf);
       }
      close(clt_sock);
      return 0;
}

一对一的通信,客户端接收数据,服务端就等待着客户端发送数据。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LV_YONG/article/details/79966581

Java之Socket编程实现一对一通信

要实现通信,要通过一个网络线路连接两台计算机。提供信息的计算机或者程序被称为服务器,请求的信息计算机或者程序被称为客户机。    一对一的通讯实现过程:首先,服务器程序创建一个服务器套接字(Serv...
  • Mymistakes
  • Mymistakes
  • 2015-05-07 22:50:25
  • 1894

udp一对一通信

public class ChatTest { public static void main(String[] args) { InetAddress name; ...
  • flying_fish_wj
  • flying_fish_wj
  • 2016-08-17 20:36:22
  • 156

socket编程(1)—— 一对一通信(本地IPC和网络)

一 网络基础知识1 OSI七层协议模型  人和计算机之间交互分了7层(OSI 7层模型):物理层、数据链路层、网络层、传输层、会话层、表现层、应用层。   TCP/IP协议模型中,把应用、表现和会话...
  • Robot__Man
  • Robot__Man
  • 2016-08-24 17:20:22
  • 925

socket.io一对一通信的实现

socket.io网上有很多例子,但是大多数都是聊天室的,没有找到一对一通信的例子 百度搜索了一下,在oschina里面看到了一篇文章http://www.oschina.net/question/1...
  • a5799694
  • a5799694
  • 2014-12-13 18:25:57
  • 5342

Java学习笔记(一)------服务器&客户端一对一通信小程序实现(TCP)

服务器端程序: package org.ning.study.swing; import java.awt.BorderLayout; import java.awt.Container; i...
  • u010352603
  • u010352603
  • 2016-01-02 17:25:00
  • 419

socket编程实例,客户端和服务器端一对一信息传输

  • 2011年10月08日 23:13
  • 8.08MB
  • 下载

socket实现一对一通信

  • 2013年06月07日 13:20
  • 54KB
  • 下载

聊天 一对一 Socket

本例只适合初学用Socket编程的人,因而力求简单,让老鸟见笑了J另本示例用的是vs20051、服务端Imports System.NetImports System.Net.SocketsImpor...
  • cooldidi1
  • cooldidi1
  • 2007-04-25 15:49:00
  • 575

java实现基础的一对一和一对多的TCP通信

java实现简单的tcp一对一及一对多连接。
  • qq_35580883
  • qq_35580883
  • 2017-10-02 23:13:05
  • 9742

Linux一对一通信(UDP)

客户端:#include #include #include #include #include #include #include #define MAX_BUF_SIZE 1...
  • LV_YONG
  • LV_YONG
  • 2018-04-17 19:32:34
  • 3
收藏助手
不良信息举报
您举报文章:Linux一对一的通信
举报原因:
原因补充:

(最多只允许输入30个字)