这是客户端程序:<?php
$server_ip="127.0.0.1";
$port = 123434;
if($_POST['submit']){ $buf=trim($_POST['buf']);
$sockfd=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)or die("创建失败");
socket_connect($sockfd,$server_ip,$port)or die("连接错误");
//$buf=$_POST['buf'];
socket_write($sockfd,$buf,strlen($buf))or die("写入错误");
$a=socket_read($sockfd,4096);
echo "the message from server: ".$a."<br />";
$buf="";
socket_close($sockfd);
//unset($_POST['submit']);
}
?>
<form action="tcpclient.php" method="post">
请选则发送方式:<br><input type=text name="buf">
<input type=submit name="submit" value="发送">
</form>这是服务器端:
/*server.c*/
#include <string.h>
#include <stdio.h>
#include <netinet/in.h>
#include <stdlib.h>
#define SERV_PORT 123434
int main()
{
int sockfd,n,servaddr_len,client_len,connfd;
int sendd;
char * server_ip = "127.0.0.1";
char buf[80];
char send[]="hello client!\n";
struct sockaddr_in server,client;
sockfd = socket (AF_INET,SOCK_STREAM,0);
bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(server_ip);
server.sin_port = htons(SERV_PORT);
servaddr_len = sizeof(server);
client_len=sizeof(client);
if((bind(sockfd,(struct sockaddr *) &server,servaddr_len))<0){
printf("bind error!\n");
exit(1);
}
if((listen(sockfd,6))<0){
printf("listen error!\n");
exit(1);
}
while(1)
{
bzero(buf,sizeof(buf));
printf("waiting for data.......\n");
connfd=accept(sockfd,(struct sockaddr *)&client,&client_len);
n = read(connfd,buf,sizeof(buf));
if(n<0){
printf("reading error\n");
break;
}
else {
printf("the data is :%s\n",buf);
sendd = write(connfd,send,strlen(send));
if(sendd<0){
printf("send to client error\n");
exit(1);
}
printf("send ok\n");
}
// write(connfd,buf,n);
close(connfd);
}
close(sockfd);
return 0;
}
为什么客户端发送信息后,总是显示连接错误?
我用udp通信就能发,用上面的tcp通信的代码就是连接错误,哪位高手指点一下
$server_ip="127.0.0.1";
$port = 123434;
if($_POST['submit']){ $buf=trim($_POST['buf']);
$sockfd=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)or die("创建失败");
socket_connect($sockfd,$server_ip,$port)or die("连接错误");
//$buf=$_POST['buf'];
socket_write($sockfd,$buf,strlen($buf))or die("写入错误");
$a=socket_read($sockfd,4096);
echo "the message from server: ".$a."<br />";
$buf="";
socket_close($sockfd);
//unset($_POST['submit']);
}
?>
<form action="tcpclient.php" method="post">
请选则发送方式:<br><input type=text name="buf">
<input type=submit name="submit" value="发送">
</form>这是服务器端:
/*server.c*/
#include <string.h>
#include <stdio.h>
#include <netinet/in.h>
#include <stdlib.h>
#define SERV_PORT 123434
int main()
{
int sockfd,n,servaddr_len,client_len,connfd;
int sendd;
char * server_ip = "127.0.0.1";
char buf[80];
char send[]="hello client!\n";
struct sockaddr_in server,client;
sockfd = socket (AF_INET,SOCK_STREAM,0);
bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(server_ip);
server.sin_port = htons(SERV_PORT);
servaddr_len = sizeof(server);
client_len=sizeof(client);
if((bind(sockfd,(struct sockaddr *) &server,servaddr_len))<0){
printf("bind error!\n");
exit(1);
}
if((listen(sockfd,6))<0){
printf("listen error!\n");
exit(1);
}
while(1)
{
bzero(buf,sizeof(buf));
printf("waiting for data.......\n");
connfd=accept(sockfd,(struct sockaddr *)&client,&client_len);
n = read(connfd,buf,sizeof(buf));
if(n<0){
printf("reading error\n");
break;
}
else {
printf("the data is :%s\n",buf);
sendd = write(connfd,send,strlen(send));
if(sendd<0){
printf("send to client error\n");
exit(1);
}
printf("send ok\n");
}
// write(connfd,buf,n);
close(connfd);
}
close(sockfd);
return 0;
}
为什么客户端发送信息后,总是显示连接错误?
我用udp通信就能发,用上面的tcp通信的代码就是连接错误,哪位高手指点一下
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货