如何用自己的PC机连接到Internet并调试Internet 客户服务程序

larryxie 2000-05-31 11:27:00
我现在正在调试一个Internet 客户服务程序,用winsock实现,使用dssock控件,现在我已经在内部局域网中调试成功服务器和客户端的程序,请教我如何利用自己拨号上网的机器作一台Internet服务器在Internet上调试.
我知道当我上网时,ISP会自动给我一个IP地址,我是否可以利用这个IP地址让别的机器通过Internet访问我的服务器程序,我试了一下我的服务器程序,发现他始终只对机器内部的IP地址有反映(局域网的IP地址),对ISP动态分配给我的IP地址一点反应也没有.请问高手我错在什么地方?
...全文
99 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
larryxie 2000-05-31
  • 打赏
  • 举报
回复
我自己找到了答案,和大家共享.
winsock的缺省本地的IP地址是你在局域网中的IP地址,即你的winsock控件的LocalDotaddr属性是局域网中的IP地址,你只要设定为每次拨号上网时ISP给你的动态IP地址即可,如果你怕麻烦,你可以把LocalDotaddr属性设定为"0.0.0.0"这样无论是从局域网上来的访问还是Internet上来的访问都会被你的服务程序得到.
实验(No. 4)题目:简单的客户/服务器程序设计与实现 实验目的及要求: 1、熟悉Microsoft Visual Studio 2008编程环境。 2、了解TCP与UDP协议,以及它们之间的区别。 3、了解客户/服务器模型原理。 4、熟悉Socket编程原理,掌握简单的套接字编程。 实验设备: 硬件:PC机(两台以上)、网卡、已经设定好的以太网环境 软件:Microsoft Visual Studio 2008 实验内容及步骤: 1、编写用TCP协议实现的Client端和Server端程序调试通过。 程序分两部分:客户程序和服务器程序。 工作过程是: 服务器首先启动,它创建套接字之后等待客户的连接;客户启动后创建套接字,然后 和服务器建立连接;建立连接后,客户接收键盘输入,然后将数据发送到服务器,服 务器收到到数据后,将接收到的字符在屏幕上显示出来。或者服务器接收键盘输入, 然后将数据发送到客户机,客户机收到数据后,将接收到的字符在屏幕上显示出来。 程序流程如下: 2、编写用UDP协议实现的Client端和Server端程序调试通过(做完第一个实验的基础 上做该实验)。 3、编写用TCP协议实现Client端与Server端的一段对话程序。Server端根据用户的输入 来提示Client端下一步将要进行操作。 所用函数及结构体参考: 1、创建套接字——socket() 功能:使用前创建一个新的套接字 格式:SOCKET PASCAL FAR socket(int af, int type, int procotol); 参数:af:代表网络地址族,目前只有一种取值是有效的,即AF_INET,代表internet地 址族; Type:代表网络协议类型,SOCK_DGRAM代表UDP协议,SOCK_STREAM代表TCP协议; Protocol:指定网络地址族的特殊协议,目前无用,赋值0即可。 返回值为SOCKET,若返回INVALID_SOCKET则失败。 2、指定本地地址——bind() 功能:将套接字地址与所创建的套接字号联系起来。 格式:int PASCAL FAR bind(SOCKET s, const struct sockaddr FAR * name, int namelen); 参数:s: 是由socket()调用返回的并且未作连接的套接字描述符(套接字号)。 其它:没有错误,bind()返回0,否则SOCKET_ERROR 地址结构说明: struct sockaddr_in { short sin_family;//AF_INET u_short sin_port;//16位端口号,网络字节顺序 struct in_addr sin_addr;//32位IP地址,网络字节顺序 char sin_zero[8];//保留 } 3、建立套接字连接——connect()和accept() 功能:共同完成连接工作 格式:int PASCAL FAR connect(SOCKET s, const struct sockaddr FAR * name, int namelen); SOCKET PASCAL FAR accept(SOCKET s, struct sockaddr FAR * name, int FAR * addrlen); 参数:s: 是由socket()调用返回的并且未作连接的套接字描述符(套接字号)。 4、监听连接——listen() 功能:用于面向连接服务器,表明它愿意接收连接。 格式:int PASCAL FAR listen(SOCKET s, int backlog); 5、数据传输——send()与recv() 功能:数据的发送与接收 格式:int PASCAL FAR send(SOCKET s, const char FAR* buf, int len, int flags); int PASCAL FAR recv(SOCKET s, const char FAR * buf, int len, int flags); 参数:buf:指向存有传输数据的缓冲区的指针。 6、多路复用——select() 功能:用来检测一个或多个套接字状态。 格式:int PASCAL FAR select(int nfds, fd_set FAR* readfds, fd_set FAR* writefds, fd_set FAR * exceptfds, const struct timeval FAR* timeout); 参数:readfds:指向要做读检测的指针 writefds:指向要做写检测的指针 exceptfds:指向要检测是否出错的指针 timeout:最大等待时间 7、

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧