请大虾检查我的socket小实验程序
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h> //包含sockaddr_in 结构体
#include <string.h> //包含bzero 函数
#include <sys/socket.h> //包含send() 和recv() 函数
#define server_cont 8080
int main()
{
struct sockaddr_in my_addr;
int socketfd;
int sendlen=5;
int msg[5]={1,2,3,4,5};
int flag=0;
if(socketfd = socket(PF_INET,SOCK_STREAM,0) < 0)
{
printf("the socket is err!\n");
return 0;
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(server_cont);
my_addr.sin_addr.s_addr = (180<<24)|(111<<16)|(35<<8)|234;
bzero(&(my_addr.sin_zero),8);
if (connect(socketfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) < 0)
{
printf("connect is err!\n");
return 0;
}
test:
flag = send(socketfd, msg, sendlen, 0);
if(flag <0)
{
printf("send is err!\n");
goto test;
}
while(1)
{
sleep(1);
}
close(socketfd);
return 0;
}
能够ping通180.111.35.234,相互ping通,connect不成功,错误编号是-1
服务端是用网络调试助手软件,已经打开并连接
------解决方案--------------------类似这种if里写语句而少括号的问题很多:
http://bbs.csdn.net/topics/390301441
http://bbs.csdn.net/topics/390307641
当然这些一般也有其他一些错误. 你的根本原因是if内少括号和ip地址赋值错误!
请引以为戒!