• 代码示例_网络编程_TCP


    TCP


    1. 头文件

     1 #pragma once
     2 
     3 #include <stdio.h>
     4 #include <stdlib.h>
     5 #include <sys/types.h>
     6 #include <sys/socket.h>
     7 #include <strings.h>
     8 #include <string.h>
     9 #include <linux/in.h>
    10 
    11 #define IP "192.168.2.150"
    12 #define PORT 9999
    13 #define SIZE 128

    2. client_tcp

     1 #include "net.h"
     2 
     3 int main(void)
     4 {
     5     //1.创建套接字
     6     int fd = socket(AF_INET,SOCK_STREAM,0);
     7     if(fd<0){
     8         perror("socket failed");
     9         exit(1);
    10     }
    11 
    12 
    13     //2.初始服务器地址
    14     struct sockaddr_in cli;
    15     cli.sin_family = AF_INET;
    16     cli.sin_port = htons(PORT);
    17     cli.sin_addr.s_addr=inet_addr(IP);
    18 
    19 
    20     //3.发起连接请求
    21     if( connect(fd,(struct sockaddr*)&cli,sizeof(cli))<0 ){
    22         perror("connect failed");
    23         exit(1);
    24     }
    25 
    26 
    27     //4.写
    28     char buf[SIZE];
    29     while(1){
    30     bzero(buf,SIZE);
    31     printf("please input:	");
    32     fgets(buf,SIZE,stdin);
    33     write(fd,buf,strlen(buf));
    34         if(strncmp(buf,"quit",4)==0)
    35         break;
    36     }
    37 
    38     
    39     //5.关闭
    40     close(fd);
    41 
    42     return 0 ;
    43 }

    3.server_tcp

     1 #include "net.h"
     2 
     3 int main(void)
     4 {
     5     //1.创建套接字
     6     int fd = socket(AF_INET,SOCK_STREAM,0);
     7     if(fd<0){
     8         perror("socket failed");
     9         exit(1);
    10     }
    11 
    12 
    13     //2.初始本地地址
    14     struct sockaddr_in ser;
    15     ser.sin_family = AF_INET;
    16     ser.sin_port = htons(PORT);
    17     ser.sin_addr.s_addr=inet_addr(IP);
    18 
    19 
    20     //3.绑定
    21     if(  bind(fd,(struct sockaddr*)&ser,sizeof(ser))<0  ){
    22         perror("bind failed");
    23         exit(1);
    24     }
    25 
    26 
    27     //4.监听
    28     if(  listen(fd,5)<0  ){
    29         perror("listen failed");
    30         exit(1);
    31     }
    32 
    33 
    34     //5.接收
    35     int newfd;
    36     if(   (newfd=accept(fd,NULL,NULL))<0  ){
    37         perror("accept failed");
    38         exit(1);
    39     }
    40 
    41 
    42     //6.读
    43     char buf[SIZE];
    44     while(1){
    45     bzero(buf,SIZE);
    46     int ret = read(newfd,buf,SIZE);
    47     if(ret<0){
    48         perror("read failed");
    49         exit(1);
    50     }
    51     else if(ret==0)
    52         break;
    53     else
    54     printf("server : %s",buf);
    55         if(strncmp(buf,"quit",4)==0)
    56             break;
    57     }
    58 
    59     //7.关闭
    60     close(fd);
    61     close(newfd);
    62 
    63 
    64     return 0 ;
    65 }

    测试:


    success !

    Stay hungry, stay foolish 待续。。。
  • 相关阅读:
    PHP WAMP关闭notice等提示
    PowerDesigner 逆向工程 从SQL文件转换成PDM 从PDM转成CDM
    Servlet 各种path路径比较
    数据库一对一的两种关联 主键关联和外键关联
    Java Timer定时器
    VS2010彻底卸载
    VS2010每次编译都重新编译整个工程的解决方案
    DbgPrint/KdPrint输出格式控制
    error TRK0002: Microsoft Visual Studio 10.0VCinlink.exe Access is denied.
    WinDbg F9时“code not found breakpoint not set”
  • 原文地址:https://www.cnblogs.com/panda-w/p/11063829.html
Copyright © 2020-2023  润新知