Racket没有关闭TCP端口

时间:2015-06-02 02:36:23

标签: racket

我在Racket中编写了一个简单的HTTP echo服务器。当我从DrRacket中运行服务器然后单击“停止”按钮时,我的程序终止,但正在使用的端口需要花费很长时间才能关闭。如果我在终止程序后在我的终端中运行 private class PopupViewContainer extends FrameLayout { private static final String TAG = "PopupWindow.PopupViewContainer"; public PopupViewContainer(Context context) { super(context); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (mTouchInterceptor != null && mTouchInterceptor.onTouch(this, ev)) { return true; } return super.dispatchTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent event) { final int x = (int) event.getX(); final int y = (int) event.getY(); if ((event.getAction() == MotionEvent.ACTION_DOWN) && ((x < 0) || (x >= getWidth()) || (y < 0) || (y >= getHeight()))) { dismiss(); return true; } else if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { dismiss(); return true; } else { return super.onTouchEvent(event); } } ,我就不会看到任何绑定到该端口的内容,但是DrRacket不同意并且拒绝让我重新启动我的程序,告诉我某些内容已经绑定到该程序端口。

这是Racket中的一个错误,还是我缺少某些东西?

1 个答案:

答案 0 :(得分:3)

如果您直接使用tcp-listen(意味着您自己处理所有低级套接字内容,并手动处理HTTP),则需要将reuse?参数设置为{ {1}}。

如果您使用的是#t模块,它已将web-server设置为reuse?,因此它应该已经有效。