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

一个新手,请教一个将linux下编的C程序转换到window下的问题

    来源: 互联网  发布时间:2015-07-10

    本文导语:  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  int main(int argc, char *argv[]) {  int sockfd,new_fd;  int whilen;  struct sockaddr_in server_addr;  struct sockaddr_in client_addr;  int sin_size,portnumber;...

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
int main(int argc, char *argv[])
{
 int sockfd,new_fd;
 int whilen;
 struct sockaddr_in server_addr;
 struct sockaddr_in client_addr;
 int sin_size,portnumber;
 int nbytes,totalbytes;
 int i;
 char hello[]="Hello! Are You Fine?n";
 struct timeval tpstart,tpend;
 float timeuse;
 whilen=10;
 timeuse=0;
 totalbytes=0;
 nbytes=0;

 if(argc!=2)//argc not have a vaule at before,so why argc!=2??
 {
  fprintf(stderr,"Usage:%s portnumberan",argv[0]);
  exit(1);
 }
 
 if((portnumber=atoi(argv[1]))0)
{
totalbytes+=nbytes;
//measure time
timeuse+=1000000*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;
  timeuse/=1000000; 
tpstart=tpend;
gettimeofday(&tpend,NULL);
}
whilen--;

  }
  printf("the down rate %f Kbps,total throughput %d bytesn",totalbytes*8/1000/timeuse,totalbytes);
  close(new_fd);
 close(sockfd);
 exit(0);
}

我这里并不希望大家能完全给我答案,当然这也是不可能的,我只是想请各位大虾高人能告诉我这些在程序中用到的函数的功能以及在windows下的对应函数(包括开头的那些头文件),不指望一个网友能解决我所有的问题,众人拾柴火焰高,每位网友都帮俺一点啊!在此十分感谢!

|
基本上对应的操作系统接口得换。 socket函数到winsock函数,具体的要查msdn。

|
/*--

Copyright (c) 2003 Shenzhen Huaren Education Co.Ltd

File Name:
bsocket.h
Version:
2.0
Abstract:
Definitions for portable Berkeley socket operation. 
Author:
Gang He
Created on:
2003-11-12
Modified History:
2004-06-23
Modified Person:
Gang He
--*/

#ifndef _HEGANG_BSOCKET_H_
#define _HEGANG_BSOCKET_H_


#ifdef WIN32
#include 
typedef int socklen_t;
#else
#include 
#include 
#include 
#include 
#include 
#include 
typedef int SOCKET;
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#endif


typedef unsigned short PORT;


#define SOCKET_TIMEOUT -2


#ifdef __cplusplus
extern "C" {
#endif


/*-
Name:
SOCKET create_sock(int domain, int type, int protocol)
Description:
Create a socket descriptor 
Input Parameters:
domain: the protocol family
type: socket type
protocol: a particular protocol
Output Parameters:
nothing
Return Value:
a socket descriptor, otherwise INVALID_SOCKET is returned if an error occurred.
-*/
SOCKET create_sock(int domain, int type, int protocol);


/*-
Name:
int bind_sock(SOCKET sock, PORT port)
Description:
Bind a socket
Input Parameters:
sock: socket descriptor
port: port to be binded
Output Parameters:
nothing
Return Value:
0, otherwise SOCKET_ERROR is returned if an error occurred.
-*/
int bind_sock(SOCKET sock, PORT port);


/*-
Name:
int listen_sock(SOCKET sock, int backlog)
Description:
Listen a socket 
Input Parameters:
sock: socket descriptor
backlog: listen queue length
Output Parameters:
nothing
Return Value:
0, otherwise SOCKET_ERROR is returned if an error occurred.
-*/
int listen_sock(SOCKET sock, int backlog);


/*-
Name:
SOCKET accept_sock(SOCKET sock, char* fromip)
Description:
Accept a socket
Input Parameters:
sock: socket descriptor
Output Parameters:
fromip: peer IP address, this buffer must be larger or equal to 16 bytes,
otherwise, set NULL.
Return Value:
a socket descriptor, otherwise SOCKET_ERROR is returned if an error occurred.
-*/
SOCKET accept_sock(SOCKET sock, char* fromip);


/*-
Name:
int connect_sock(SOCKET sock, const char* ip, PORT port)
Description:
Connect a socket
Input Parameters:
sock: socket descriptor
ip: peer IP address
port: peer port
Output Parameters:
nothing
Return Value:
0, otherwise SOCKET_ERROR is returned if an error occurred.
-*/
int connect_sock(SOCKET sock, const char* ip, PORT port);


/*-
Name:
int send_sock(SOCKET sock, const void* buf, int len)
Description:
Send data by socket
Input Parameters:
sock: socket descriptor
buf: data buffer
len: data size
Output Parameters:
nothing
Return Value:
the number of bytes sent, otherwise SOCKET_ERROR is returned if an error occurred.
-*/
int send_sock(SOCKET sock, const void* buf, int len);


/*-
Name:
int sendto_sock(SOCKET sock, const void* buf, int len, const char* ip, PORT port)
Description:
Send data message by socket
Input Parameters:
sock: socket descriptor
buf: message buffer
len: message size
ip: peer ip address
port: peer port
Output Parameters:
nothing
Return Value:
the number of bytes sent, otherwise SOCKET_ERROR is returned if an error occurred.
-*/
int sendto_sock(SOCKET sock, const void* buf, int len, const char* ip, PORT port);


/*-
Name:
int recv_sock(SOCKET sock, void* buf, int len)
Description:
Receive data from a socket 
Input Parameters:
sock: socket descriptor
Output Parameters:
buf: data buffer
len: buffer size
Return Value:
the number of bytes received, otherwise SOCKET_ERROR is returned if an error occurred.
-*/
int recv_sock(SOCKET sock, void* buf, int len);


/*-
Name:
int recvex_sock(SOCKET sock, void* buf, int len, int sec)
Description:
Receive data from a socket 
Input Parameters:
sock: socket descriptor
sec: timeout time
Output Parameters:
buf: data buffer
len: buffer size
Return Value:
the number of bytes received, otherwise 
SOCKET_ERROR is returned if an error occurred,
SOCKET_TIMEOUT is returned if no data be received.
-*/
int recvex_sock(SOCKET sock, void* buf, int len, int sec);


/*-
Name:
int recvfrom_sock(SOCKET sock, void* buf, int len, char* fromip, PORT* port)
Description:
Receive data message from a socket 
Input Parameters:
sock: socket descriptor
Output Parameters:
buf: data message buffer
len: buffer size
fromip: peer ip address
port: peer port
Return Value:
the number of bytes received, otherwise SOCKET_ERROR is returned if an error occurred.
-*/
int recvfrom_sock(SOCKET sock, void* buf, int len, char* fromip, PORT* port);


/*-
Name:
void close_sock(SOCKET* sock)
Description:
Close a socket 
Input Parameters:
sock: socket pointer
Output Parameters:
sock: set *sock INVALID_SOCKET
Return Value:
nothing
-*/
void close_sock(SOCKET* sock);


/*-
Name:
int init_sock()
Description:
Initialize winsock DLL
Input Parameters:
nothing
Output Parameters:
nothing
Return Value:
0, otherwise nonzero is returned if an error occurred.
-*/
#ifdef WIN32
int init_sock();
#endif


/*-
Name:
int clean_sock()
Description:
Clean up winsock DLL
Input Parameters:
nothing
Output Parameters:
nothing
Return Value:
0, otherwise nonzero is returned if an error occurred.
-*/
#ifdef WIN32
int clean_sock();
#endif


#ifdef __cplusplus
}
#endif

#endif


|
在windows上记得要用WSAStartup()和WSACleanup()

|
楼上可谓俯首干为楼主牛阿。^_^

|
看看stevens的unp吧,解释太清楚了

|
winsock这一套嘛,都有和linux下面socket相对应的

|
up

|
mark

|
不会太难

    
 
 

您可能感兴趣的文章:

  • 新手的菜鸟问题:不同内核版本下编译的程序能否互相调用,是否需要在同一内核下重新编译.
  • 我是新手,想请教各位大侠一个问题:我在unix下编译c文件的时候,系统总是提示我文件中有非法字符'//',程序中有的地方是用//作为注释符
  • 新手请教,我用VI时按ESC键,总是回嘟嘟嘟嘟响,请问如何去掉!谢谢!
  • 新手请教Linux和ubuntu
  • Linux新手请教声卡驱动!!!!!!!!!!!
  • 新手来请教一个关于IDE的问题
  • 大家好,我是linux新手,有些问题请教
  • 新手,有问题请教!
  • 新手,请教关于文件编辑问题...
  • 新手请教:RedHat Linux 7.3下的网络连接问题
  • 新手请教arm与linux的问题
  • 新手虚心请教.在线等复....vsftp配置成功后,本机可以FTP上,但其他系统通过FTP工具不能上.防火墙不能关..
  • 新手请教啦~~能不能帮忙推荐几本书
  • 新手,请教安装SCO Unix的问题
  • 新手请教!!!!
  • 新手请教2
  • 新手请教:我的声卡所附光盘提供了下面的这些文件,我怎么安装驱动?
  • 新手的问题,请教高手
  • 新手请教安装问题!
  • 新手向大家请教jsp,servlet的调试,发布问题
  • 我是新手,请教LINUX下如何访问光驱里的文件。
  • 新手请教一下学习GCC的经验
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • LINUX下的AD转换问题,新手碰到困难了,请大家帮忙!
  • int型(or short)怎样转换为byte[]型啊?新手求救
  • 有关Red hat linux9.0从图形模式转换成文字模式的小问题~~~(新手)
  • 新手请教老问题,关于日期的转换,还请各位不怕麻烦。谢谢。
  • 新手如何加入开源项目 有什么好的c++,java 开源适合新手 请指点!
  • JDBC的问题,新手高手都来看看吧,说不定能帮帮我这个新手呢,谢谢!
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 新手关于驱动开发的疑问
  • 新手有关linux的问题!
  • 新手急求~~~~~~~~~~~~~~~~~~~
  • 新手学习该用哪个版本
  • 面向新手的终端辅助工具 Clicompanion
  • 我是个新手,请各位老兄给介绍基本好书?
  • 我是新手
  • 新手:用WEB页面修改数据库中的表?
  • Java新手上路之问题
  • 我是一名新手,请问如何学java
  • (新手)这里怎么看到300篇以外的所有文章?(不是搜索)
  • 新手求助!
  • 新手上路,怎样判断网卡是否安装成功?
  • !!新手求救!!
  • 新手在此多谢了:SUN的宠物商店
  • 新手求救!!关于变量初始化
  • 新手问题:RH怎么退回字符界面? 急!!!!


  • 站内导航:


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

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

    浙ICP备11055608号-3