我是新的C++和套接字編程。我設法在unix機器上使用C++創建服務器,並將該服務器連接到在不同Windows計算機上運行的java客戶端。我也設法成功地從客戶端發送消息到服務器。我還沒有管理的是將消息從服務器發送到客戶端。我想這是我對C++新手,但我沒有在互聯網上找到一些非常有用的東西。我只發現C++客戶端到服務器通信代碼,而不是服務器到客戶端。有人可以提供一些指導嗎?將消息從C++服務器發送到java客戶端
日Thnx提前爲你的時間和你的幫助......
C++服務器代碼
int main(int argc, const char** argv)
{
/* SOCKET VARIABLES */
int sock;
struct sockaddr_in server;
int mysock;
char buff[1024];
int rval;
/*CREATE SOCKET*/
sock =socket(AF_INET, SOCK_STREAM, 0);
if (sock<0)
{
perror("*FAILED TO CREATE SOCKET*");
exit(1);
}
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=htons(5000);
/*CALL BIND*/
if (bind(sock, (struct sockaddr *)&server, sizeof(server)))
{
perror("BIND FAILED");
exit(1);
}
/*LISTEN*/
listen(sock, 5);
/*ACCEPT*/
do{
mysock= accept(sock, (struct sockaddr *) 0, 0);
if (mysock==-1)
{
perror ("ACCEPT FAILED");
}
else
{
memset(buff, 0, sizeof(buff));
if ((rval=recv(mysock, buff, sizeof(buff), 0)) < 0)
perror("READING STREAM MESSAGE ERROR");
else if(rval==0)
printf("Ending connection");
else
printf("MSG: %s\n", buff);
printf("GOT THE MESSAGE (rval = %d)\n", rval);
}
}while (1) ;
return 0;
Java客戶端代碼
public class SOK_1_CLIENT {
public void run() throws Exception
{
String adrress="172.16.151.237"; //localhost -- samemachine
Socket SOCK =new Socket (adrress,5000);
PrintStream PS =new PrintStream(SOCK.getOutputStream());
PS.println("HELLO TO SERVER FROM CLIENT");
InputStreamReader IR =new InputStreamReader(SOCK.getInputStream());
BufferedReader BR = new BufferedReader(IR);
String MESSAGE =BR.readLine();
System.out.println(MESSAGE + "java");
}
}
小心java的命名規則,因爲這是有點混亂,看代碼那麼多常量。 – SirDarius