c语言实现socket登录的简单介绍

本文目录一览:

c语言系统库之socket

ai参数应指向由getaddrinfo返回的第一个addrinfo结构。这个连表中的所有结构以及它们指向的任何动态存储空间都被释放掉。

在windows下,如何用纯C语言实现socket网络编程?

mfc只是对socket进行了一些封装,大部分人做

网络编程

都是用的原始的socket,比如如下接口都可以在c下进行调用

1.socket()

2.bind()

3.connect()

4.listen()

5.accept()

6.send()

和recv()

7.sendto()

和recvfrom()

8.close()

和shutdown()

9.

getpeername

()

10.

gethostname

()

这些接口是在Winsock2.h中定义的不是在mfc中定义的,你只需要包含Winsock2.h

头文件

Ws2

_32.lib库就可以了。

socket编程 c语言

sender 没有看到 i 打印,是由于你没有加换行,由于标准输出是行缓冲,所以不会马上打印,而是要等遇到 \n 或者进程结束才会打印。你可以写成 printf(“%d\n”); 就能看到发送方的打印。

接收方也可以加上printf来打印。

这么简单的程序,用gdb自己调试也可以。

socket,linux用c语言实现

哦字符串回显啊unix网络编程有好几个版本,你可以去网上下它的源代码(百度搜UNIX网络编程 源代码),呃大部分被我的改的不成样了,发个能用的给看看吧

//server

#includestdio.h

#includesys/socket.h

#includearpa/inet.h

#includenetinet/in.h

#includestdlib.h

#includestring.h

#includeunistd.h

#includeerrno.h

#includesignal.h

#define SERVPORT 1956

#define MAXLINE 100

typedef void Sigfunc(int);

void sig_chld(int signo)

{

        pid_t pid;

        int stat;

        while( (pid = waitpid(-1, stat, WNOHANG))  0)

                printf(“child %d terminated\n”, pid);

        return;

}

//read data from client, and write back to them

void str_echo(int sockfd)

{

        ssize_t n;

        char buf[MAXLINE];

        again:

        while( (n = read(sockfd, buf, MAXLINE))  0 )

                write(sockfd, buf, n);

        if(n  0  errno ==EINTR)

                goto again;

        else if(n  0 )

                printf(“error\n”);

}

int main(int argc, char** argv)

{

        int listenfd, connfd;

        socklen_t clilen;

        pid_t childpid;

        struct sockaddr_in servaddr, cliaddr;

        if( (listenfd = socket(AF_INET, SOCK_STREAM, 0))  0 )

        {

                printf(“socket fd error\n”);

                return -1;

        }

        bzero(servaddr, sizeof(servaddr));

        servaddr.sin_family = AF_INET;

        servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

        servaddr.sin_port = htons(SERVPORT);

        if( bind(listenfd, (struct sockaddr *)servaddr, sizeof(servaddr)) 0 )

        {

                printf(“bind error\n”);

                return -1;

        }

        int backlong = 0;

        if(listen(listenfd, backlong) 0 )

        {

                printf(“listen error\n”);

                return -1;

        }

        signal(SIGCHLD, sig_chld);

        for(;;)

        {

                clilen = sizeof(cliaddr);

                if( (connfd = accept(listenfd, (struct sockaddr *)cliaddr, clilen))  0)

                {

                        if(errno == EINTR)      continue;

                        else printf(“accept error\n”);

                        return 0;

                }

                printf(“accept \n”);

                if( (childpid = fork()) == 0 )

                {

                        close(listenfd);    //close child’s listen socket

                        str_echo(connfd);

                        exit(0);

                }

                close(connfd);

        }

 }

//client

#includestdio.h

#includesys/socket.h

#include arpa/inet.h

#include netinet/in.h

#include stdlib.h

#include string.h

#define MAXLINE 10

int main(int argc, char ** argv)

{

        int sockfd, n;

        char recvline[MAXLINE+1];

        struct sockaddr_in servaddr,binaddr;

        if(argc != 2)

        {

                printf(“usage: IPADDRESS\n”);

                return -1;

        }

        if( (sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))  0)

        {

                printf(“socket error\n”);

                return -1;

        }

        bzero(servaddr, sizeof(servaddr));

        servaddr.sin_family = AF_INET;

        servaddr.sin_port = htons(15);

        if(inet_pton(AF_INET, argv[1], servaddr.sin_addr)=0 )    

        {

                printf(“inet_pton error for s \n”, argv[1]);

                return -1;

        }

        int bindSock;

        binaddr.sin_family = AF_INET;

        inet_pton(AF_INET, “222.26.224.56”, binaddr.sin_addr);

        binaddr.sin_port = htons(20000);

        int reuse0 = 1;

        if(setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (char *)reuse0, sizeof(reuse0)) == -1)

        {

                printf(“set socket error\n”);

                return -1;

        }

        if( bind(sockfd, (struct sockaddr *)binaddr, sizeof(servaddr)) 0 )

        {

                printf(“bind error\n”);

                return -1;

        }

        if( connect(sockfd, (struct sockaddr*) servaddr, sizeof(servaddr) )  0 )

        {

                printf(“connection refuse\n”);

                return -1;

        }

        while( (n = read(sockfd, recvline, MAXLINE))  0 )

        {

                recvline[n] = 0;

                if(fputs(recvline, stdout) == EOF)

                {

                        printf(“fputs error”);

                        return -1;

                }

                printf(“\n”);

        }

        if(n  0 )

        {

                printf(“read error”);

                return -1;

        }

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/304157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2025-01-01 11:04
下一篇 2025-01-01 11:04

相关推荐

  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • Python简单数学计算

    本文将从多个方面介绍Python的简单数学计算,包括基础运算符、函数、库以及实际应用场景。 一、基础运算符 Python提供了基础的算术运算符,包括加(+)、减(-)、乘(*)、除…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • Python海龟代码简单画图

    本文将介绍如何使用Python的海龟库进行简单画图,并提供相关示例代码。 一、基础用法 使用Python的海龟库,我们可以控制一个小海龟在窗口中移动,并利用它的“画笔”在窗口中绘制…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28

发表回复

登录后才能评论