网络编程实现聊天功能C语言(c语言网络编程详解)
跪求大神指点网络编程聊天程序(用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、这时候,我们便可以观察最终结果。