[国嵌攻略][091][TCP网络程序设计]

server.c

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

#define SERVER_PORT 3333

void main(){
     //创建标识
    int serverfd;

    serverfd = socket(AF_INET, SOCK_STREAM, 0);   //建立TCP连接

    //绑定地址
    struct sockaddr_in serverAddr;

    serverAddr.sin_family = AF_INET;                   //设置协议
    serverAddr.sin_port = htons(SERVER_PORT);          //设置端口
    serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);    //设置地址
    bzero(serverAddr.sin_zero, 8);                     //设置为零

    bind(serverfd, (struct sockaddr *)&serverAddr, sizeof(struct sockaddr));

    //监听端口
    listen(serverfd, 1);

    //等待连接
    socklen_t clientAddrLen;
    struct sockaddr_in clientAddr;
    int clientfd;

    clientAddrLen = sizeof(struct sockaddr);
    clientfd = accept(serverfd, (struct sockaddr *)&clientAddr, &clientAddrLen);

    //接收数据
    char buffer[2048];

    recv(clientfd, buffer, sizeof(buffer), 0);

    //显示数据
    char *clientIPAddr;

    clientIPAddr = (char *)inet_ntoa(clientAddr.sin_addr.s_addr);
    printf("server recvice from %s:\n%s", clientIPAddr, buffer);

    //关闭连接
    close(clientfd);
    close(serverfd);
}

client.c

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

#define SERVER_PORT 3333

int main(int argc, char **argv){
    //参数检查
    if(argc != 2){
        printf("Usage:\n\t./client <ip address>\n");
        return -1;
    }

    //创建标识
    int clientfd;

    clientfd = socket(AF_INET, SOCK_STREAM, 0);   //建立TCP连接

    //建立连接
    struct sockaddr_in serverAddr;

    serverAddr.sin_family = AF_INET;                   //设置协议
    serverAddr.sin_port = htons(SERVER_PORT);          //设置端口
    serverAddr.sin_addr.s_addr = inet_addr(argv[1]);   //设置地址
    bzero(serverAddr.sin_zero, 8);                     //设置为零

    connect(clientfd, (struct sockaddr *)&serverAddr, sizeof(struct sockaddr));

    //输入数据
    char buffer[2048];

    printf("client send to %s:\n", argv[1]);
    fgets(buffer, sizeof(buffer), stdin);

    //发送数据
    send(clientfd, buffer, sizeof(buffer), 0);

    //关闭连接
    close(clientfd);

    return 0;
}
时间: 2024-08-04 14:16:14

[国嵌攻略][091][TCP网络程序设计]的相关文章

[国嵌攻略][068][tftp网络协议实现]

IP协议结构 UDP协议结构 TFTP协议结构 TFTP端口 读写请求端口: 69 其他请求端口:1024~65535 主程序 /******************************************************************** *名称:menu *参数: * none *返回: * none *功能:菜单命令 *********************************************************************/ voi

[国嵌攻略][090][linux网络编程模型]

编程模型 Socket的实质就是一个接口,利用该接口,用户在使用不同的网络协议时,操作函数得以统一.而针对不同协议的差异性操作,则交给了Socket去自行解决. TCP编程模型 UDP编程模型

[国嵌攻略][117][LED驱动程序设计]

LED程序设计 1.编写内核模块 2.搭建字符驱动框架 3.实现设备方法 头文件 <linux/io.h> writel() leddev.h //设备命令 #define LED_MAGIC 'L' //LED幻数 #define LED_ON _IO(LED_MAGIC, 0) //打开LED #define LED_OFF _IO(LED_MAGIC, 1) //关闭LED leddev.c /***********************************************

[国嵌攻略][164][USB驱动程序设计]

USB驱动模型 1.USB host controller driver(主控器驱动):为USB主控制器提供驱动程序 2.USB core(USB核心):连接USB主控制器驱动和USB设备驱动 3.USB client driver:为USB外部设备提供驱动程序 USB设备模型 device(设备)->config(配置)->interface(接口)->endpoint(端点),构成了USB设备的四个层次.一个usb driver(驱动)对应的是一个interface(接口).一个接口

[国嵌攻略][151][nandflash驱动程序设计]

初始化 打开/drivers/mtd/nand/s3c2410.c找到nand flash驱动程序代码,找到模块初始化函数s3c_nand_init,找到platform_driver中的probe函数. 1.使能时钟 2.进行物理地址到虚拟地址转换 3.硬件纠错初始化 4.搜索nand flash 5.注册分区信息 nand flash读操作 nand flash读写函数位于通用驱动/drivers/mtd/nand/nand_base.c.nand flash的读函数位于nand_read的

[国嵌攻略][063][电阻屏驱动程序设计]

/******************************************************************** *名称:touchscreen.c *作者:D *时间:2015.11.23 *功能: * 触摸屏驱动,由于MINI2440采用一线触控,而非四线电阻触控所以触摸屏 * 驱动无法使用. ********************************************************************/ /****************

[国嵌攻略][089][网络协议分析]

网络模型 OSI参考模型: 物理层.数据链路层 | 网络层 | 传输层 | 会话层.表示层.应用层 TCP/IP参考模型: 网络接口层         | 网络层 | 传输层 | 应用层 网络协议要素 1.协议规则 2.数据格式 协议架构 以太网协议格式 IP协议格式 TCP协议格式 UDP协议格式

[国嵌攻略][135][网络子系统深度分析]

网络发包模型 1.选择路由 2.交给邻居子系统(路由中紧挨着发送方的网关).如果没有邻居信息,那么由Linux中的邻居子系统来建立邻居信息. 发送数据过程 //系统调用层和协议无关层 1.发送入口sock_aio_write 2.调用do_sock_write 3.调用__sock_sendmsg //网络协议栈 4.调用udp_sendmsg 5.调用ip_route_output_flow(选择路由) 6.调用udp_push_pending_frames 7.调用ip_push_pendi

[国嵌攻略][079][多进程程序设计]

fork.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> void main(){ int pid; pid = fork(); printf("pid is %d\n", pid); exit(0); } vfork.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h>