我试图弄清楚如何创建一个java程序,它可以监听多个端口并根据客户端说话的端口执行不同的操作.
我已经看到并理解了基本的客户端 - 服务器程序:http: //systembash.com/content/a-simple-java-tcp-server-and-tcp-client/
只是重申一下,我想创建这个相同的关系,但是不是服务器只监听一个端口并在接收输入时执行一个动作,我希望它在多个端口上侦听并根据客户端连接的端口并将数据发送到,执行不同的操作.
我希望将来每个端口都接受一个GET和PUT命令,但是现在我只想弄清楚如何设置服务器的基本结构,它将能够监听多个端口.我试过谷歌搜索,但我似乎找不到多少,所以任何帮助都表示赞赏.
提前致谢. - 安东尼
我目前正在使用UDP中的基本发送和接收程序.我目前正在半正确地发送文件,唯一的问题是它丢失了每个发送数据块的第一个字符.例如,如果我是送独立宣言,第一个块发送的开头是这样的:
"^ @ N CONGRESS,1776年7月4日." 而不是"1776年7月4日的国会".
接收并附加到文件的每个块的开头都以"^ @"开头,而不是正确的字母.我尝试打印出recvData [0]并打印出很多空格(至少100个换行符).
此外,这个程序100%正常,在我的本地主机(OS X)上,但当上传到服务器(Ubuntu)时,它用^ @替换第一个字符,所以我完全不知道问题是什么.
这是send函数的源代码:
void sendFile() {
// Announce who we're sending data to
if(DEBUG) { printf("\nSending %s to %s:%d\n", filename, address, port); }
// Open file
FILE * file = fopen(filename, "rb");
if (file == NULL) {
perror("Invalid File\n");
exit(1);
}
// Get size of the file
fseek(file, 0, SEEK_END);
int filesize = ftell(file);
rewind(file);
int curPos = 0;
int dataSize = 0;
while(curPos < filesize) {
struct sockaddr_in server_addr; …Run Code Online (Sandbox Code Playgroud)