一个tcpip的小例子

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

#define PORT_NUM 8888
#define LOCALIP "192.168.1.2"

int main() {

  int listen_fd, conn_fd;
  struct sockaddr_in server_addr, client_addr;
  int client_len;
  int len =  0;
  char recv_buf[1024];
  char send_buf[1024];
  listen_fd = socket(AF_INET, SOCK_STREAM, 0);
  if (listen_fd == -1) {
    perror("Failed to socket ");
    return -1;
  }
  memset(&server_addr, 0, sizeof(server_addr));
  server_addr.sin_family = AF_INET;
  server_addr.sin_port = htons(PORT_NUM);
  server_addr.sin_addr.s_addr = htonl(INADDR_ANY); //

  if (bind(listen_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
    perror("failed to bind");
    return -1;
  }

  printf("now listen...\n");
  if (listen(listen_fd, 10) == -1) {
    perror("failed to listen");
  }

  while (1) {
    memset(&client_addr, 0, sizeof(client_addr));
    client_len = sizeof(client_addr);
    printf("now accept...\n");
    conn_fd = accept(listen_fd, (struct sockaddr *)&client_addr, &client_len);
    if (conn_fd == -1) {
      perror("failed to accept");
      return -1;
    }

    memset(recv_buf, 0, sizeof(recv_buf));
    printf("now recv...\n");
    len = recv(conn_fd, recv_buf, sizeof(recv_buf), 0);
    if (len == -1) {
      perror("failed to recv");
      return -1;
    }
    printf("recv from client is %s\n", recv_buf);
    printf("now send...\n");
    memset(send_buf, 0, sizeof(send_buf));
    sprintf(send_buf, "hello, client tcp terminal test ");
    len = send(conn_fd, send_buf, strlen(send_buf), 0);
    if (len == -1) {
      perror("failed to send");
      return -1;
    }
    printf("send msg to client %s\n", send_buf);
    close(conn_fd);
  }
  close(listen_fd);
  return 0;
}

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <stdio.h>

#define PORT_NUM 8888
#define LOCALIP "192.168.1.2"

int main() {

  int sock_fd;
  unsigned short port;
  in_addr_t addr_in;
  struct sockaddr_in server_addr;
  int len = 0;
  char send_buf[1024];
  char recv_buf[1024];
  sock_fd = socket(AF_INET, SOCK_STREAM, 0);
  if (sock_fd == -1) {
    perror("failed to sock_fd");
    return -1;
  }
  memset(&server_addr, 0, sizeof(server_addr));
  server_addr.sin_family = AF_INET;
  server_addr.sin_port = htons(PORT_NUM);
  server_addr.sin_addr.s_addr = inet_addr("192.168.1.2");

  if (connect(sock_fd, (struct sockaddr *)&server_addr, sizeof(server_addr))== -1) {
    perror("failed to connect");
    return -1;
  }

  memset(send_buf, 0, sizeof(send_buf));
  sprintf(send_buf, "hello ! server terminal send test");
  len = send(sock_fd, send_buf, strlen(send_buf), 0);

  if (len == -1) {
    perror("failed to send");
    return -1;
  }

  memset(recv_buf, 0, sizeof(recv_buf));
  printf("now recv...\n");
  len = recv(sock_fd, recv_buf, sizeof(recv_buf), 0);
  if (len == -1) {
    perror("failed to recv");
    return -1;
  }

  printf("receive msg: %s\n", recv_buf);
  close(sock_fd);
  return 0;
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值