我在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中的一个错误,还是我缺少某些东西?
答案 0 :(得分:3)
如果您直接使用tcp-listen
(意味着您自己处理所有低级套接字内容,并手动处理HTTP),则需要将reuse?
参数设置为{ {1}}。
如果您使用的是#t
模块,它已将web-server
设置为reuse?
,因此它应该已经有效。