Chào các anh chị !
Em đang gặp vấn đề là không thể mở 2 socket chạy song song cùng lúc với nhau. Socket mở trước chạy bình thường, và socket mở sau bị treo ngay tại vị trí mở socket. Em dùng PIC18F4620 và ENC28J60. Dùng Application: Generic TCP Client.Dùng board kết nối với 2 server khác nhau.
Trong hàm Generic TCP Client() tiến hành mở port như sau:
Socket 1:
static BYTE ServerNamePC[] = "192.168.1.5";
static WORD ServerPortPC = 8100;
Mở Socket 1:
MySocketPC = TCPOpen((DWORD)&ServerNamePC[0], TCP_OPEN_RAM_HOST, ServerPortPC, TCP_PURPOSE_GENERIC_TCP_CLIENT);
if(MySocketPC == INVALID_SOCKET)
break;
Socket 2:
static BYTE ServerName[] = "192.168.1.199";
static WORD ServerPort = 9100;
Mở Socket 2:
MySocket = TCPOpen((DWORD)&ServerName[0], TCP_OPEN_RAM_HOST, ServerPort, TCP_PURPOSE_GENERIC_TCP_CLIENT);
if(MySocket == INVALID_SOCKET)
break;
Em cũng đã thử lấy địa chỉ MAC của các Server bằng các hàm ARP, lấy thông tin Server bằng hàm TCPGetRemoteInfo() để mở lại Server tránh hỏi DNS nhiều lần. Nhưng vẫn không có gì thay đổi so với cách mở Socket thông thường.
Anh chị nào đã làm qua TCPIP Stack và gặp trường hợp này giúp em với.!
Em xin cảm ơn các anh chị rất nhiều !!
Em đang gặp vấn đề là không thể mở 2 socket chạy song song cùng lúc với nhau. Socket mở trước chạy bình thường, và socket mở sau bị treo ngay tại vị trí mở socket. Em dùng PIC18F4620 và ENC28J60. Dùng Application: Generic TCP Client.Dùng board kết nối với 2 server khác nhau.
Trong hàm Generic TCP Client() tiến hành mở port như sau:
Socket 1:
static BYTE ServerNamePC[] = "192.168.1.5";
static WORD ServerPortPC = 8100;
Mở Socket 1:
MySocketPC = TCPOpen((DWORD)&ServerNamePC[0], TCP_OPEN_RAM_HOST, ServerPortPC, TCP_PURPOSE_GENERIC_TCP_CLIENT);
if(MySocketPC == INVALID_SOCKET)
break;
Socket 2:
static BYTE ServerName[] = "192.168.1.199";
static WORD ServerPort = 9100;
Mở Socket 2:
MySocket = TCPOpen((DWORD)&ServerName[0], TCP_OPEN_RAM_HOST, ServerPort, TCP_PURPOSE_GENERIC_TCP_CLIENT);
if(MySocket == INVALID_SOCKET)
break;
Em cũng đã thử lấy địa chỉ MAC của các Server bằng các hàm ARP, lấy thông tin Server bằng hàm TCPGetRemoteInfo() để mở lại Server tránh hỏi DNS nhiều lần. Nhưng vẫn không có gì thay đổi so với cách mở Socket thông thường.
Anh chị nào đã làm qua TCPIP Stack và gặp trường hợp này giúp em với.!
Em xin cảm ơn các anh chị rất nhiều !!