日期:2014-05-16  浏览次数:20612 次

请大虾检查我的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地址赋值错误!
请引以为戒!