c语言实现网络聊天室

求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语言的,最好是UDP

晨风心雨网易学院

用VC++6.0的Sockets API实现一个聊天室程序

· 2005-10-09 13:39:36 · 来源: 天极网 第1页:用VC++6.0的Sockets API实现一个聊天室程序 第2页:用VC++6.0的Sockets API实现一个聊天室程序

c语言实现网络聊天室

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

聊天室的话涉及网络通信。流程大概是:

1.

客户端连接服务器(登陆,上传相应的数据(起码有聊天室编号))

2.

客户端发生消息给服务器(消息+聊天室编号)

3.

服务器根据客户端上传的聊天室编号广播消息

4.

客户端接受服务器传来的消息

用到的技术就是socket编程(应该有其他的现成的框架,不过我用得比较多的是java,不清楚c的),如果还想做个界面的话,可以用qt做,或者MFC,应该还有其他可选方式,不过我不知道~~~。

上面只是简单的,你要做完备的还有很多问题需要考虑,比如说加密数据,优化使其能容纳较多的用户,服务器崩溃时的处理方案等等。

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

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

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

关于用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();

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月27日 11:41:31
下一篇 2024年3月27日 11:50:09

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    3900
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5600
  • 无法从网络安装linux,linux安装无法进入安装界面

    怎么装Linux系统 1、第一步:选择Linux发行版Linux系统由众多发行版组成,不过最常用的就是Ubuntu、Fedora和Debian等。它们各自拥有自己的特点和用途,因此在进行Linux安装之前,先应该选择一款适合自己需求的发行版。 2、linux系统安装方法如下:使用光驱或U盘或你下载的LinuxISO文件进行安装。直接skip就可以了。出现引导…

    2024年5月23日
    4600
  • 知识竞赛网络安全法,网络安全法知识竞赛题

    网络安全知识竞赛活动策划方案 1、网络安全主题活动方案1 活动宗旨 提高同学们的网络安全意识,在加强网络安全知识学习的同时,营造一种浓厚的学习氛围。较好地发挥学生的特长,丰富学生的课余生活和提高同学们学习计算机网络的热忱。 2、关于网络安全主题活动方案篇1 网络信息人人共享,网络安全人人有责。网民的网络安全意识和防护技能,关乎广大人民群众的切身利益,关乎国家…

    2024年5月23日
    6400
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4300
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4300
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7200
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6300
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4500
  • linux聊天室,linux聊天室实验报告

    刚买的电脑需要关闭哪些端口? 1、这样,关闭了SMTP服务就相当于关闭了对应的端口。 2、为了让你的系统变为铜墙铁壁,应该封闭这些端口,主要有:TCP 131344591025 端口和 UDP 131313445 端口,一些流行病毒的后门端口(如 TCP 2743126129 端口),以及远程服务访问端口3389。 3、在“本地安全策略”窗口,用鼠标右击新添…

    2024年5月23日
    4400

发表回复

登录后才能评论



关注微信