当前位置:  技术问答>linux和unix

linux下的socket 编译段错误是怎么回事,求教

    来源: 互联网  发布时间:2017-01-14

    本文导语:  代码如下,请教各位大神 server端: #include  #include  #include  #include  #include  #include  #include  #include  #define SERVPORT 3333 /*服务器监听端口号 */ int main() { int sockfd,client_fd; /*sock_fd:监听socket;client_fd:数...

代码如下,请教各位大神
server端:
#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#define SERVPORT 3333 /*服务器监听端口号 */



int main()

{

int sockfd,client_fd; /*sock_fd:监听socket;client_fd:数据传输socket */

int sin_size;

struct sockaddr_in my_addr; /* 本机地址信息 */

struct sockaddr_in remote_addr; /* 客户端地址信息 */

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) 

{

perror("socket创建出错!"); exit(1);

}

my_addr.sin_family=AF_INET;

my_addr.sin_port=htons(SERVPORT);

my_addr.sin_addr.s_addr = inet_addr("127.0.0.2");

bzero(&(my_addr.sin_zero),8);

if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) 

{

perror("bind出错!");

exit(1);

}

if (listen(sockfd, 5) == -1) 

{

perror("listen出错!");

exit(1);

}

while(1) 

{

sin_size = sizeof(struct sockaddr_in);
printf("Server waitingn");

if ((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr, &sin_size)) == -1) 

{

perror("accept出错");

continue;

}

printf("received a connection from server ", inet_ntoa(remote_addr.sin_addr));

if (!fork()) { /* 子进程代码段 */

if (send(client_fd, "Hello, you are connected! ", 26, 0) == -1)

perror("send出错!");

close(client_fd);

exit(0);

}

}

}


client端:
#include

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#define SERVPORT 3333

#define MAXDATASIZE 100 /*每次最大数据传输量 */

main(){

int sockfd, recvbytes;

char buf[MAXDATASIZE];

struct hostent *host;

struct sockaddr_in serv_addr;

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1){

perror("socket创建出错!");

exit(1);

}

serv_addr.sin_family=AF_INET;

serv_addr.sin_addr.s_addr=inet_addr("127.0.0.2");

serv_addr.sin_port=htons(SERVPORT);

serv_addr.sin_addr = *((struct in_addr *)host->h_addr);

bzero(&(serv_addr.sin_zero),8);

if (connect(sockfd, (struct sockaddr *)&serv_addr,

sizeof(struct sockaddr)) == -1) {

perror("connect出错!");

exit(1);

}

if ((recvbytes=recv(sockfd, buf, MAXDATASIZE, 0)) ==-1) {

perror("recv出错!");

exit(1);

}

buf[recvbytes] = 10;

printf("Received: client",buf);

close(sockfd);

}
万分感谢啊

|
client端:
serv_addr.sin_port=htons(SERVPORT);

serv_addr.sin_addr = *((struct in_addr *)host->h_addr); /* 把这句删了 */

bzero(&(serv_addr.sin_zero),8);

|
多加点打印 看看到哪边出问题  找到哪一行就好办多了

    
 
 

您可能感兴趣的文章:

  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 求教linux C++学习之路!
  • 小白菜求教linux大鸟
  • Linux远程访问的问题,高分求教:)
  • 求教:在Linux下如何做代理服务器?
  • 求教如何学习linux源码
  • 求教,Linux下键盘输入的所有数据都会经过Linux内核吗???
  • 求教linux的ARCH ?= $(XXX)中符号“?=”怎么理解?先谢过
  • 求教,linux下c编程时怎么导入命令行?
  • 百分求教linux下运行java程序的问题
  • 菜鸟求教!--linux编程初学者
  • [ 求教 ] Linux下如何让USB自启动
  • linux入门求教
  • LINUX初学者求教
  • 求教:我想学LINUX内核,不知道买什么书
  • 新手求教如何学习LINUX
  • linux菜鸟求教
  • 求教:在linux上驱动U口ISDN。
  • 求教,linux内核代码关于网络部分的浅析
  • linux求教-----急!
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • linux 64位编译出错。linux 32位可以编译过。
  • 关于在linux交叉编译powerpc-e300c3-linux-gcc的编译问题
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • linux下有没有能编译出16bit代码的C语言编译器?
  • 现要在一台Pentium100上安装LINUX操作系统,能不能不选用别的品牌的LINUX,而直接用内核编译,然后再加上编译器和SHELL等等其它东西?如
  • linux下可以编译c但是如何编译c++
  • arm-linux-gcc交叉编译出错,但gcc编译没错,什么原因呢???
  • 谁编译过PLX9054 Linux的驱动程序,我给100分教我编译和安装??
  • 何处有 Linux 内核编译配置详细的中文介绍? 我在重新配置编译时老是出错:-(
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用linux(服)windows(客)传输文件,windows端可以,linux端不可以,怎么回事???
  • Linux与Win2000共存,选择启动Linux的时候,到Starting system logger:处停住不动了,怎么回事?
  • vmtools 工具 在linux挂起之后不可用是怎么回事啊
  • 装了linux后,进入windows2000变得很慢,怎么回事?谢谢了!
  • linux 有线连接了却显示有线连接断开是怎么回事
  • linux装好后,系统启动的时候,死机是怎么回事?
  • linux下使用易飞ERP系统出现“报表数据库连接错误!!”是怎么回事
  • xinetd在LINUX中找不到配置文件 是怎么回事 我也安装了啊
  • red hat linux与windows 2000 server相连,2000 关机后linux自动启动!问高手怎么回事?
  • 从Linux拷贝文件时,总出现符号链接错误时怎么回事?
  • linux下system 函数调用不成功,怎么回事?
  • U盘插入后Linux无响应,怎么回事?
  • NOVELL LINUX DESKTOP 9 和AIX是一回事么?
  • linux启动是怎么回事
  • yarrow linux Fedora 发行版是怎么回事?
  • linux安装问题:安装完成后启动出现满屏的010101010101,是怎么回事?
  • 如何在WIN下访问LINUX的文件那?和网页出错怎么回事!
  • Linux下出现这个提示是怎么回事啊?
  • 我用RAWRITE做LINUX启动盘时失败。原因:IMAGES目录下.img文件太大(2M多)怎么回事?
  • 在LinuX的书上有$ls -f和#ls -f,怎么回事
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    yarrow linux Fedora 发行版是怎么回事? iis7站长之家