基于c语言,网络编程,服务器接收客户端1的信息发送给客户端2

基于c语言,网络编程,服务器接收客户端1的信息发送给客户端2,第1张

char

buff2[102410];

int

receiveLen;

/调用accept函数,等待客户端的连接/

client_fd=accept(sockfd,(struct

sockaddr

)&client_sockaddr,&sin_size

/调用recv函数接收客户端的请求/

recvbytes=recv(client_fd,buf,BUFFER_SIZE,0)

typedef

int

(WINAPI

ICEPUB_TCPSENDANDRECEIVETEXT)(char

sendBuff,

int

sendBuffLen,char

recvBuff,int

recvMaxLen,char

serverIP,int

serverPort);

ICEPUB_TCPSENDANDRECEIVETEXT

icePub_tcpSendAndReceiveText

=

0;

HINSTANCE

hDLLDrv

=

LoadLibrary

("icePubDlldll");

if(hDLLDrv)

{

icePub_tcpSendAndReceiveText=(ICEPUB_TCPSENDANDRECEIVETEXT

)

GetProcAddress

(hDLLDrv,"icePub_tcpSendAndReceiveText");

}

if(icePub_tcpSendAndReceiveText)

receiveLen=icePub_tcpSendAndReceiveText(buf,recvbytes),buff2,102410,"19216812",8000);

if(hDLLDrv)

FreeLibrary(hDLLDrv);

AfxMessageBox

(buff2);

你的文件中的问题

// 会阻塞进程,直到有客户端连接上来为止

// 既然是直到有客户端连接上,那么就要弄明白哪个是与客户端连接的套接字

// sockClient就是与客户端连接的套接字

sockClient = accept(sockServer, (SOCKADDR)&addrClient, &len);

//接收并打印客户端数据

recv(sockClient, recvBuf, 100, 0);

printf("%s\n", recvBuf);

// 所以此处,应该把sockServer改为sockClient

send(/sockServer/sockClient, sendBuf, 100, 0);

PS:服务器客户端通信,是要保持服务器与客户端的连接。

而不能这样立即关闭,如果设置不对,立即关闭,缓冲区的数据是会丢失的。那客户端也就不会再收到数据了。

你可以加Sleep(10000);来测是通信过程

//关闭socket

closesocket(sockClient);

在创建新的套接字之前要调用一个引入Ws2_32dll库的函数,所以在调用socket函数创建新的sockets之前要先调用WSAStartup函数。WSAStartup函数作用是引入Ws2_32dll库

由于客户端IP被写入程序,所以在不动源代码的情况下不能更改,只好从服务器端想办法。

有几个方式可以实现:

一、服务器接入路由器,由路由器来连接不同网段,在其内设置虚拟专网。

二、服务器安装两块网卡。

三、你就不会再弄台计算机做以前IP地址的服务器啊~

四、实在不行,你就直接在客户机上安装虚拟服务器好了。

以上各具体部骤恕我不详细说明,够写一本书了……自己上网搜吧。

进入mysql,创建一个新用户xuys:

格式:grant 权限 on 数据库名表名 用户@登录主机 identified by "用户密码";

grant select,update,insert,delete on to xuys@19216888234 identified by "xuys1234";

查看结果,执行:

use mysql;

select host,user,password from user;

可以看到在user表中已有刚才创建的xuys用户。host字段表示登录的主机,其值可以用IP,也可用主机名,

将host字段的值改为%就表示在任何客户端机器上能以xuys用户登录到mysql服务器,建议在开发时设为%。

update user set host = '%' where user = 'xuys';

2、 /mysqladmin -uroot -p21century reload

/mysqladmin -uroot -p21century shutdown

3、/mysqld_safe --user-root &

记住:对授权表的任何修改都需要重新reload,即执行第3步。

如果经过以上3个步骤还是无法从客户端连接,请执行以下操作,在mysql数据库的db表中插入一条记录:

use mysql;

insert into db values('19216888234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

update db set host = '%' where user = 'xuys';

重复执行上面的第2、3步。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 基于c语言,网络编程,服务器接收客户端1的信息发送给客户端2

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情