求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语言编写一个简单的聊天室程序
聊天室的话涉及网络通信。流程大概是:
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();