TCP服务器:
TCP_Server.c

#include<stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define PORTNUMBER 3333

int main(int argc,char*argv[])
{
    int sockfd,new_fd;
    struct sockaddr_in server_addr;
    struct sockaddr_in client_addr;
    int sin_size;
    int nbytes;
    char buffer[1024];

//socket

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
    {
        fprintf(stderr,"Socket error:%s\n",strerror(errno));
        exit(1);
    }
    //address

bzero(&server_addr,sizeof(structsockaddr_in));
    server_addr.sin_family=AF_INET;
    server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
    server_addr.sin_port=htons(PORTNUMBER);

//bind

if(bind(sockfd,(structsockaddr *)(&server_addr),sizeof(structsockaddr_in))==-1)
    {
        fprintf(stderr,"Bind error:%s\n",strerror(errno));
        exit(1);
    }

//listen

if(listen(sockfd,5)==-1)
    {
        fprintf(stderr,"Listen error:%s\n",strerror(errno));
        exit(1);
    }

while(1)
    {
        sin_size=sizeof(structsockaddr_in);
 if((new_fd=accept(sockfd,(structsockaddr *)(&client_addr),&sin_size))==-1)
        {
            fprintf(stderr,"Accept error:%s\n",strerror(errno));
            exit(1);
        }
        fprintf(stderr,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr));

if((nbytes=read(new_fd,buffer,1024))==-1)
        {
            fprintf(stderr,"Read Error:%s\n",strerror(errno));
            exit(1);
        }
        buffer[nbytes]='\0';
        printf("Server received %s\n",buffer);
        close(new_fd);
    }
}

TCP客户端:

TCP_client.c

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

#define PORTNUMBER 3333

int main(int argc,char*argv[])
{
    int sockfd;
    char buffer[1024];
    struct sockaddr_in server_addr;
    struct hostent*host;

//使用hostent查询host name

if(argc!=2)
    {
        fprintf(stderr,"Uage:%s hostname\a\n",argv[0]);
        exit(1);
    }

if((host=gethostbyname(argv[1]))==NULL)
    fprintf(stderr,"Gethostname error\n");
        exit(1);
    }

//socket

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
    {
        fprintf(stderr,"Socket Error:%s\a\n",strerror(errno));
        exit(1);
    }

//ip port

bzero(&server_addr,sizeof(server_addr));
    server_addr.sin_family=AF_INET;
    server_addr.sin_port=htons(PORTNUMBER);
    server_addr.sin_addr=*((structin_addr *)host->h_addr);

//connect

if(connect(sockfd,(structsockaddr *)(&server_addr),sizeof(structsockaddr_in))==-1)
    {
        fprintf(stderr,"Connect error:%s\a\n",strerror(errno));
        exit(1);
    }

printf("Please input char:\n");
    fgets(buffer,1024,stdin);
    write(sockfd,buffer,strlen(buffer));

close(sockfd);
    exit(0);
}

--------------**************分割线***************-------------------

UDP服务器:

udp_server.c

  1 #include <stdlib.h>
  2 #include<stdio.h>
  3 #include<errno.h>
  4 #include<string.h>
  5 #include<unistd.h>
  6 #include<netdb.h>
  7 #include<sys/socket.h>
  8 #include<netinet/in.h>
  9 #include<arpa/inet.h>
 10 #include<sys/types.h>
 11
 12 #define SERVER_PORT 8888
 13 #define MAX_MSG_SIZE 1024
 14
 15 void udps_respon(int sockfd)
 16 {
 17    struct sockaddr_in addr;
 18    int addrlen,n;
 19    char msg[MAX_MSG_SIZE];
 20
 21    while(1)
 22    {
 23      bzero(msg,sizeof(msg));
 24      addrlen=sizeof(structsockaddr);
 25      n=recvfrom(sockfd,msg,MAX_MSG_SIZE,0,(structsockaddr *)&addr,&addrlen);
 26      msg[n]='\0';
 27      fprintf(stdout,"Server have received %s",msg);
 28    }
 29 }
 30
 31
 32 int main(void)
 33 {
 34    int sockfd;
 35    struct sockaddr_in addr;
 36
 37 //socket

38    sockfd=socket(AF_INET,SOCK_DGRAM,0);
 39    if(sockfd<0)
 40    {
 41       fprintf(stderr,"Socket Error:%s\n",strerror(errno));
 42       exit(1);
 43    }
 44
 45 //ip port
 46    bzero(&addr,sizeof(structsockaddr_in));
 47    addr.sin_family=AF_INET;
 48    addr.sin_addr.s_addr=htonl(INADDR_ANY);
 49    addr.sin_port=htons(SERVER_PORT);
 50
 51 //bind

52    if(bind(sockfd,(structsockaddr *)&addr,sizeof(structsockaddr_in))<0)
 53    {
 54       fprintf(stderr,"Bind Error:%s\n",strerror(errno));
 55       exit(1);
 56    }
 57    udps_respon(sockfd);
 58    close(sockfd);
 59 }

UDP客户端:

udp_client.c

  1 #include <stdlib.h>
  2 #include<stdio.h>
  3 #include<errno.h>
  4 #include<string.h>
  5 #include<netdb.h>
  6 #include<sys/types.h>
  7 #include<arpa/inet.h>
  8 #include<sys/socket.h>
  9
 10 #define SERVER_PORT 8888
 11 #define MAX_BUF_SIZE 1024
 12
 13 void udpc_requ(int sockfd,conststruct sockaddr_in*addr,int len)
 14 {
 15    char buffer[MAX_BUF_SIZE];
 16    int n;
 17    while(1)
 18    {
 19       printf("please input char:\n");
 20       fgets(buffer,MAX_BUF_SIZE+1,stdin);
 21       sendto(sockfd,buffer,strlen(buffer),0,(structsockaddr *)addr,len);
 22       bzero(buffer,MAX_BUF_SIZE);
 23    }
 24 }
 25
 26
 27 int main(int argc,char**argv)
 28 {
 29    int sockfd;
 30    struct sockaddr_in addr;
 31    struct hostent*host;
 32
 33    if(argc!=2)
 34    {
 35       fprintf(stderr,"Usage:%s server_ip\n",argv[0]);
 36       exit(1);
 37    }
 38
 39    if((host=gethostbyname(argv[1]))==NULL)
 40    {
 41       fprintf(stderr,"Gethostname error\n");
 42       exit(1);
 43    }
 44
 45 //socket

46    sockfd=socket(AF_INET,SOCK_DGRAM,0);
 47    if(sockfd<0)
 48    { 
 49       fprintf(stderr,"Socket Error:%s\n",strerror(errno));
 50       exit(1);
 51    }
 52
 53 //ip port

54    bzero(&addr,sizeof(structsockaddr_in));
 55    addr.sin_family=AF_INET;
 56    addr.sin_port=htons(SERVER_PORT);
 57    /* if(inet_aton(argv[1],&addr.sin_addr)<0)
 58    {
 59    fprintf(stderr,"IP error:%s\n",strerror(errno));
 60    exit(1);
 61    } */
 62    addr.sin_addr=*((structin_addr *)host->h_addr);
 63 
 64
 65    udpc_requ(sockfd,&addr,sizeof(structsockaddr_in));
 66    close(sockfd);
 67 }

TCP/UDP 网络编程实例相关推荐

  1. TCP/UDP(网络编程)

    TCP/UDP(大作业) 文章目录 TCP/UDP(大作业) Java 网络编程 1.1.描述TCP协议和UDP协议,并说出他们的区别与联系: 基于客户机-服务器模式的应用场景 2.什么是客户机-服务 ...

  2. TCP/UDP网络编程

    目录 一.常见的客户端服务端模型 二.Socket套接字 1.概念 2.分类 a.流套接字 b.数据报套接字 c.原始套接字 三.UDP数据报套接字编程 四.TCP数据报套接字编程 一.常见的客户端服 ...

  3. Java的TCP/UDP网络编程+多线程实现服务器端与客户端间的通信

    写在前面: Java为网络编程提供了丰富的库,我们能通过调用Socket套接字的方法实现服务器与客户端的双通信. 注意点: 需要注意的是端口的对应,端口可以理解为窗户,服务器只能通过某个端口(窗户)与 ...

  4. TCP/UDP网络编程入门教程之二:TCP Server端——socket与文件描述符

    UNIX中的一切事物都是文件(everything in Unix is a file!) 当我在这篇教程中提到UNIX的时候,其意思专指符合UNIX标准的所谓"正统"UNIX的衍 ...

  5. 计算机tcpip网络原理与应用,清华大学出版社-图书详情-《TCP/IP网络编程原理与技术》...

    前言 随着Internet的发展,网络技术已经渗透到人们的生活和工作中.TCP/IP已经成为最流行的网络协议,且还在演变以满足未来的需要.在速度越来越快的计算机硬件和不断更新的软件发展的背后,TCP/ ...

  6. 高等学校计算机科学与技术教材:tcp/ip网络编程技术基础,TCP/IP网络编程技术基础...

    TCP/IP网络编程技术基础 语音 编辑 锁定 讨论 上传视频 <TCP/IP网络编程技术基础>是2012年北京交通大学出版社出版的图书,作者是王雷. 书    名 TCP/IP网络编程技 ...

  7. JAVA UDP网络编程学习笔记

    一.UDP网络编程概述 采用TCP协议通信时,客户端的Socket必须先与服务器建立连接,连接建立成功后,服务器端也会持有客户端连接的Socket,客户端的Socket与服务器端的Socket是对应的 ...

  8. TCP/IP网络编程(3)

    基于DUP的服务端与客户端 在TCP/IP网络编程(2)中,介绍了TCP/IP的四层模型,传输层分为TCP和UDP两种方式,通过TCP套接字完成数据交换已经进行了介绍,下面介绍通过UDP套接字完成数据 ...

  9. TCP/IP网络编程(1)

    1. 套接字 套接字是由操作系统提供的网络数据通信软件设备,即使对网络数据传输原理不了解,也能够使用套接字完成网络数据传输.为了与远程计算机进行数据传输,需要连接到英特网,套接字就是进行网络连接的工具 ...

最新文章

  1. 今晚20:00 | 港科大郑光廷院士详解人工视觉技术发展及应用
  2. [BZOJ2456/ZOJ2132]mode/The Most Frequent Number
  3. Office 2010 系统要求
  4. #!(sha-bang)--脚本的开始
  5. 海康威视主机升级固件_海康威视网络广播主机DSKAM6HG1S
  6. 用jekyll制作高大上的网站(二)——实际应用
  7. 前端学习(14):相对路径和绝对路径
  8. 写给小白的自然语言处理入门简介
  9. python图像加坐标_Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例...
  10. (C/C++学习笔记) 十二. 指针
  11. Docker学习文档之一 安装软件-Linux环境
  12. [前端]网页网络分析及前端网络优化
  13. 第六届 蓝桥杯 省赛 第一题 奖券数目
  14. [录1953-1-13] 郭沫若, 宋庆龄 Сталина 谈话记录
  15. ssh 根据指定端口登录远程服务器
  16. 部署项目在Tomcat出现,tomcat报错More than one fragment with the name [org_apache_tomcat_websocket]
  17. 即席查询-Kylin
  18. 淘宝技术这十年(子柳著)读书笔记
  19. 电脑ps4,Windows电脑玩PS4游戏,索尼:先来升级Win10吧
  20. 黑马程序员_音乐(视频)播放器学习

热门文章

  1. 【转】JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
  2. C++中string与int\double等互转
  3. .NET框架类库中的命名空间
  4. ApplePay集成教程
  5. WPF效果(GIS三维续篇)
  6. mysql三-3:完整性约束
  7. (转) C#如何使用异步编程
  8. IOS开发之----常用函数和常数--秀清
  9. DancingLinks刷题集
  10. 【备忘】XP欢迎页中隐藏用户名