基于c语言,网络编程,服务器接收客户端1的信息发送给客户端2
char
buff2[102410];
int
receiveLen;
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步。
0条评论