如何用c语言编写QQ聊天程序(源代码)

如何用c语言编写QQ聊天程序(源代码),第1张

1、首先,我们编写C语言的头文件#include <stdio.h>。

2、然后我们编写Main函数框架。

3、接下来我们定义两个变量,如下图所示

4、然后我们编写输入的函数,如下图所示。

5、接下来在输入后,我们编写输出程序。

6、这时候,我们便可以观察最终结果。

这样:

#include <stdlib.h>

#include <stdio.h>

#include <errno.h>

#include <string.h>

#include <unistd.h>

#include <netdb.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <sys/types.h>

#include <arpa/inet.h>

#include <pthread.h>

#define MAXLINE 100

void *threadsend(void *vargp)

void *threadrecv(void *vargp)

int main()

{

int *clientfdp

clientfdp = (int *)malloc(sizeof(int))

*clientfdp = socket(AF_INET,SOCK_STREAM,0)

struct sockaddr_in serveraddr

struct hostent *hp

bzero((char *)&serveraddr,sizeof(serveraddr))

serveraddr.sin_family = AF_INET

serveraddr.sin_port = htons(15636)

serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1")

if(connect(*clientfdp,(struct sockaddr *)&serveraddr,sizeof(serveraddr)) <0){

      printf("connect error\n")

      exit(1)

}

pthread_t tid1,tid2

printf("connected\n")

while(1){

pthread_create(&tid1,NULL,threadsend,clientfdp)

pthread_create(&tid2,NULL,threadrecv,clientfdp)

}

return EXIT_SUCCESS

}

void *threadsend(void * vargp)

{

//pthread_t tid2

int connfd = *((int *)vargp)

int idata

char temp[100]

while(1){

//printf("me: \n ")

fgets(temp,100,stdin)

send(connfd,temp,100,0)

printf("          client send OK\n")

}

printf("client send\n")

return NULL

}

void *threadrecv(void *vargp)

{

char temp[100]

int connfd = *((int *)vargp)

while(1){

int idata = 0

idata = recv(connfd,temp,100,0)

if(idata >0){

printf("server :\n%s\n",temp)

}

}

return NULL

}

扩展资料:

注意事项

linux下编译多线程代码时,shell提示找不到 pthread_create函数,原因是 pthread.h不是linux系统默认加载的库文件,应该使用类似如下gcc命令进行编译:

gcc echoserver.c -lpthread -o echoserver

只要注意 -lpthread参数就可以了。

可以使用智能聊天机器人的接口来做

下面是一个简单的使用小耗子机器人提供的接口的聊天代码

#include <stdio.h>

#include <string.h>

#include <curl/curl.h>

#include <stdlib.h>

#define BOT_SER "https://brisk.eu.org/smbot/sm.php"

typedef struct

{

    size_t len

    char *msg

}MSG

size_t get_data(char *ptr,size_t size,size_t nmemb,MSG *msg)

{

    msg->msg=realloc(msg->msg,msg->len+nmemb+1)

    snprintf(msg->msg+msg->len,nmemb,"%s",ptr)

    msg->len+=nmemb

    return nmemb

}

int main(int argc,char **argv)

{

    CURL *curl

    MSG msg

    char buf[1024]

    char data[2048]

    curl=curl_easy_init()

    msg.len=0

    msg.msg=NULL

    curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,get_data)

    curl_easy_setopt(curl,CURLOPT_WRITEDATA,&msg)

    curl_easy_setopt(curl,CURLOPT_USERAGENT,"CBot/From Baidu zhidao")

    while(1)

    {

        printf(">")

        scanf("%s",buf)

        if(strcmp(buf,"exit") == 0)

            break

        snprintf(data,sizeof(data),"%s?msg=%s",BOT_SER,buf)

        curl_easy_setopt(curl,CURLOPT_URL,data)

        curl_easy_perform(curl)

        if(msg.len)

        {

            printf("%s\n",msg.msg)

            msg.len=0

            free(msg.msg)

            msg.msg=NULL

        }

    }

    curl_easy_cleanup(curl)

    return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11057385.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存