网络编程实现聊天功能C语言(c语言网络编程详解)

http://www.itjxue.com  2023-02-05 00:11  来源:未知  点击次数: 

跪求大神指点网络编程聊天程序(用c语言实现,在ubuntu终端中运行),要求:

cdsn上面应该有相关的程序,还可能会有代码,你可以去那看看。

如何用C语言编写一个简单的聊天室程序

这样:

#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参数就可以了。

关于用C语言开发一个简单的局域网聊天软件

Linux系统都是C写的 用C当然行得通

就是个socket编程嘛

我们原来做过一个的原理描述 当然 这个是C\S模式的 其实你可以做成 无服务端的

本系统具有局域网聊天功能。采用了C\S模式(即服务器创建套接字后,转换为监听套接字,一直在监听是否由客户端的请求。服务器接收到相应的请求后,进行相应的处理)。采用了TCP/IP(面向连接)协议。运用了SOCKET套接字实现了很方便的访问TCP/IP协议。多线程的操作。

服务器的程序(简述):

创建socket--bind()--listen()--accept()--recv/send()--close();

客户端的程序(简述):

创建scoket--发送connect--recv/send()--close();

求C语言高手,实现一个简单的TCPIP程序以实现两台计算机之间的聊天通信,

你上面给出的代码其实就是?MSDN?里面的演示代码,不过不完整,只演示了两个函数的使用,我给你看看我写的?TCP?通讯程序,可以在同一个局域网内的两台不同计算机之间聊天?:

这其实就是某本将网络通讯的教程里面的例子,不过是我自己重写了一遍,下面给你代码:

========================

下面是公共代码:

========================

#ifndef?__CINITSOCK__H__

#define?__CINITSOCK__H__

#include?winsock2.h

#include?iphlpapi.h

#pragma?comment(?lib,?"ws2_32.lib"?)

#pragma?comment(?lib,?"iphlpapi.lib"?)

class?CInitSock

{

public:

CInitSock(?int?nMinorVer?=?2,?int?nMajorVer?=?2?)

{

?WSADATA?wsData;

?WORD?wVer?=?MAKEWORD(?nMinorVer,?nMajorVer?);

?if(?0?!=?WSAStartup(?wVer,?wsData?)?)?exit(?0?);

}

~CInitSock(?)

{

?WSACleanup(?);

}

};

#endif

========================

下面是客户端的代码?:

=======================

#include?"CInitSock.h"

#include?iostream

using?namespace?std;

CInitSock?g_Sock;

void?main(?)

{

SOCKET?sockClient?=?socket(?AF_INET,?SOCK_STREAM,?IPPROTO_TCP?);

if(?INVALID_SOCKET?==?sockClient?)

return;

sockaddr_in?sockAddr;

sockAddr.sin_family?=?AF_INET;

sockAddr.sin_port?=?htons(?4567?);

sockAddr.sin_addr.S_un.S_addr?=?inet_addr(?"127.0.0.1"?);

if(?-1?==?connect(?sockClient,?(?sockaddr*?)sockAddr,?sizeof(?sockAddr?)?)?)

{

cout??"connect?failed"??endl;

return;

}

while(?true?)

{

char?szBuf[?MAX_PATH?];

ZeroMemory(?szBuf,?sizeof(?szBuf?)?);

cout??"You?Say?:?";

cin??szBuf;

if(?SOCKET_ERROR? ==?send(?sockClient,?szBuf,?MAX_PATH,?0?)?)

{

?cout??"send?failed"??endl;

?return;

}

int?nRecvLen?=?recv(?sockClient,?szBuf,?MAX_PATH,?0?);

if(?nRecvLen??0?)

{

?//?szBuf[?nRecvLen?]?=?'\0';

?cout??"Service?Say?:?"??szBuf??endl??endl;

}

else

{

?cout??"recv?failed"??endl;

?return;

}

}

closesocket(?sockClient?);

}

======================

下面是服务端的代码:

======================

#include?"CInitSock.h"

#include?iostream

using?namespace?std;

CInitSock?g_Sock;

void?main(?)

{

SOCKET?sockClient?=?socket(?AF_INET,?SOCK_STREAM,?IPPROTO_TCP?);

if(?INVALID_SOCKET?==?sockClient?)

return;

sockaddr_in?sockAddr;

sockAddr.sin_family?=?AF_INET;

sockAddr.sin_port?=?htons(?4567?);

sockAddr.sin_addr.S_un.S_addr?=?INADDR_ANY;

bind(?sockClient,?(?sockaddr*?)sockAddr,?sizeof(?sockAddr?)?);

listen(?sockClient,?SOMAXCONN?);

char?szBuf[?MAX_PATH?];

sockaddr_in?remoteAddr;

int?nLen?=?sizeof(?sockaddr_in?);

SOCKET?sock?=?accept(?sockClient,?(?sockaddr*?)remoteAddr,?nLen?);

while(?true?)

{

int?nRecvLen?=?recv(?sock,?szBuf,?MAX_PATH,?0?);

if(?nRecvLen??0?)

{

?cout??"Client?Say?:?"??szBuf??endl??endl;

}

ZeroMemory(?szBuf,?sizeof(?szBuf?)?);

cout??"You?Say?:?";

cin??szBuf;

if(?SOCKET_ERROR?==?send(?sock,?szBuf,?MAX_PATH,?0?)?)

{

?cout??"send?failed"??endl;

}

}

closesocket(?sock?);

closesocket(?sockClient?);

}

希望能够帮到楼主?。

用C语言实现聊天室需要什么技术

实现聊天室涉及到通讯技术,网络技术,P2P技术,保密技术,用户交互界面技术等等。通讯技术方面要实现音视频语音对话的功能,用户交互界面需要根据用户的功能的需求和使用体验,制作出体验良好的界面。

每种技术都需要花费大量的时间精力学习。例如,在C语言里面,通讯技术里一般使用套接字Socket来实现。套接字是支持TCP/IP网络通信的基本操作单元。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。

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

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

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

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

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

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

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

(责任编辑:IT教学网)

更多

推荐DNS服务器文章