How to Handle Dynamic Pivoting with a single SQL?
I was searching for a single SQL who can dynamically understands the pivoting members in the data, I saw several ways of doing Pivoting depending on the version, some are really hard to understand but just two options upto now seams to be flexable enough to do dynamic pivoting, right?
1- For this option you have to write PL/SQL block to build up the dynamic single SQL query, I also find this approach very easy to understand. :)
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:766825833740
2- 11.1 's PIVOT new feature with PIVOT XML and ANY clause, a SINGLE SQL and easy to understand but returns XMLTYPE data, another step to parse to produce the report is needed.
http://www.oracle-developer.net/display.php?id=506
Below is a 10g Model Clause example, but here instead of pivoting by A1-A2-A3 staticly I want to have these values by a distinc subquery for example;
create table test(id varchar2(2), des varchar2(4), t number);
INSERT INTO test values('A','a1',12);
INSERT INTO test values('A','a2',3);
INSERT INTO test values('A','a3',1);
INSERT INTO test values('B','a1',10);
INSERT INTO test values('B','a2',23);
INSERT INTO test values('C','a3',45);
commit;
SELECT * FROM test;
ID DES T
A a1 12
A a2 3
A a3 1
B a1 10
B a2 23
C a3 45
select distinct i, A1, A2, A3
from test c
model
ignore nav
dimension by(c.id i,c.des d)
measures(c.t t, 0 A1, 0 A2, 0 A3)
rules(
A1[any,any] = t[cv(i),d = 'a1'],
A2[any,any] = t[cv(i),d = 'a2'],
A3[any,any] = t[cv(i),d = 'a3']
I A1 A2 A3
C 0 0 45
B 10 23 0
A 12 3 1 Any advice is appreciated, thank you.
Hi,
You can do dynamic SQL in SQL*Plus, also.
[Thid thread|http://forums.oracle.com/forums/thread.jspa?messageID=2744039�] shows how to pivot a table with a dynamic number of columns.
Similar Messages
-
How to use Mulitple DAQs with a single triggered event on only one of the DAQs
I have three PXI6115 and would like to tie all these to a single triggered event on one of the DAQs. I've scaned the examples and any assistance would be greatly appreciated....
TCjr,
Please refer to your other post:
How to use Multiple DAQs with a single triggered event on only one of the DAQs -
How to handle "xsd:anyAttributes" with jaxb
Need help for how to handling "xsd:anyAttribute" with jaxb!
Here is part of my xml schema.
<xsd:attributeGroup name="DataAttributes">
<xsd:anyAttribute namespace="##local" processContents="lax"/>
</xsd:attributeGroup>
<xsd:element name="Data">
<xsd:complexType>
<xsd:attributeGroup ref="DataAttributes"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MA_Verify">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Data" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attributeGroup ref="verifyAttributes"/>
</xsd:complexType>
</xsd:element>
I have an application which only knows the attribute names and values at runtime. (Thest attributes are string.) Therefore, I cannot define attribute names in the schema and have to use xsd:anyAttribute.
I was able to generate all jaxb code. However, the interfaces generated for Data and DataType are basically all empty. The impl classes are empty too, since no get or set methods exist for the attribute.
Some thoughts for handling this case, but do not know if it will work.
(1) write some derive classes on top of the generated jaxb classes.
(2) write customized method to handle the 'Data' element level and its attributes. Similar to parseMethod or printMethod for the javaType.
(if there is a way)
Can anyone give me suggestions, directions or an laternate way to handle the situation?
Your help will be greatly appreciated.
Ruthxsd:anyAttribute is not supported by JAXB.
http://java.sun.com/xml/jaxb/users-guide/jaxb-works.html#unsupported -
How to Handle dynamic views in mm01 transaction
Hi ,
Can any body say me how to handle Dynamic views in MM01 tcode. Since every time new view has to be selected, how can we manage this through our program.
Regards,Hi Nilesh,
Views will be vary based on the Material Type what u are selectiing , so u have to focus on this settings.
Regards
Peram -
How to handle Table controls with XD01 in BDC
How to handle Table controls with XD01 in BDC - If there are more than 5/6 records in Table control. - Can any one explain it with a piece of code plz..
Thanks & Regards,
Krishna ChaitanyaHi
check this code...viz for xko1....
DATA: BEGIN OF it_xk01 OCCURS 0,
f1(1),
f2(5),
f3(5),
f4(9),
f5(9),
END OF it_xk01.
DATA: v_count(2) VALUE '00',
v_koinh(14),
v_banks(14),
v_bankn(14),
v_bankl(14),
it_bdcdata TYPE STANDARD TABLE OF bdcdata WITH HEADER LINE,
wa_ctuparams type ctu_params.
PARAMETERS: p_file TYPE rlgrap-filename OBLIGATORY.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM get_f4.
START-OF-SELECTION.
PERFORM upload_data.
END-OF-SELECTION.
LOOP AT it_xk01.
IF it_xk01-f1 = 'H'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF02K-KTOKK'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RF02K-KTOKK'
it_xk01-f2.
ENDIF.
IF it_xk01-f1 = 'N'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFA1-PSTLZ'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_field USING 'LFA1-ANRED'
'Mr'.
PERFORM bdc_field USING 'LFA1-NAME1'
it_xk01-f2.
PERFORM bdc_field USING 'LFA1-SORTL'
it_xk01-f3.
PERFORM bdc_field USING 'LFA1-PSTLZ'
it_xk01-f4.
PERFORM bdc_field USING 'LFA1-LAND1'
it_xk01-f5.
PERFORM bdc_dynpro USING 'SAPMF02K' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFA1-KUNNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
ENDIF.
IF it_xk01-f1 = 'I'.
v_count = v_count + 1.
IF v_count le 5.
CONCATENATE 'LFBK-KOINH(' v_count ')' INTO v_koinh.
CONCATENATE 'LFBK-BANKS(' v_count ')' INTO v_banks.
CONCATENATE 'LFBK-BANKN(' v_count ')' INTO v_bankn.
CONCATENATE 'LFBK-BANKL(' v_count ')' INTO v_bankl.
CONDENSE v_koinh NO-GAPS.
CONDENSE v_banks NO-GAPS.
CONDENSE v_bankl NO-GAPS.
CONDENSE v_bankn NO-GAPS.
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
PERFORM bdc_field USING 'BDC_CURSOR'
v_koinh.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING v_banks
it_xk01-f2.
PERFORM bdc_field USING v_bankl
it_xk01-f3.
PERFORM bdc_field USING v_bankn
it_xk01-f4.
PERFORM bdc_field USING v_koinh
it_xk01-f5.
else.
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
PERFORM bdc_field USING 'BDC_CURSOR'
v_koinh.
PERFORM bdc_field USING 'BDC_OKCODE'
'=P+'.
v_count = 1.
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
PERFORM bdc_field USING 'BDC_CURSOR'
v_koinh.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
CONCATENATE 'LFBK-KOINH(' v_count ')' INTO v_koinh.
CONCATENATE 'LFBK-BANKS(' v_count ')' INTO v_banks.
CONCATENATE 'LFBK-BANKN(' v_count ')' INTO v_bankn.
CONCATENATE 'LFBK-BANKL(' v_count ')' INTO v_bankl.
CONDENSE v_koinh NO-GAPS.
CONDENSE v_banks NO-GAPS.
CONDENSE v_bankl NO-GAPS.
CONDENSE v_bankn NO-GAPS.
PERFORM bdc_field USING v_banks
it_xk01-f2.
PERFORM bdc_field USING v_bankl
it_xk01-f3.
PERFORM bdc_field USING v_bankn
it_xk01-f4.
PERFORM bdc_field USING v_koinh
it_xk01-f5.
ENDIF.
ENDIF.
CLEAR it_xk01.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
PERFORM bdc_field USING 'BDC_CURSOR'
v_koinh.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
wa_ctuparams-DISMODE = 'A'.
wa_ctuparams-UPDMODE = 'S'.
wa_ctuparams-DEFSIZE = 'X'.
CALL TRANSACTION 'XK01' USING it_bdcdata MODE 'A'
UPDATE 'S'.
options from wa_ctuparams.
MODE 'A'
UPDATE 'S'.
*& Form upload_data
text
FORM upload_data .
DATA: lv_infile TYPE string.
lv_infile = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_infile
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = it_xk01.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " upload_data
*& Form get_f4
text
FORM get_f4 .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
FIELD_NAME = ' '
IMPORTING
file_name = p_file.
ENDFORM. " get_f4
Start new screen *
FORM bdc_dynpro USING program dynpro.
CLEAR it_bdcdata.
it_bdcdata-program = program.
it_bdcdata-dynpro = dynpro.
it_bdcdata-dynbegin = 'X'.
APPEND it_bdcdata.
ENDFORM. "BDC_DYNPRO
Insert field *
FORM bdc_field USING fnam fval.
IF FVAL <> NODATA.
CLEAR it_bdcdata.
it_bdcdata-fnam = fnam.
it_bdcdata-fval = fval.
APPEND it_bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD
*H 0302
*N sdng dddsj 500020 IN
*I IN ICICI 734897597 xyz
*I IN SBH 768346687 abc
*I IN SBI 345687346 fgh
*I IN SBH 763846878 ujhgf
*I IN HSBC 797893778 fvdg
*I IN HDFC 723678638 fdgf
*I IN 4444 435645646 fgfg
*I IN 3400 763468768 gfgfg -
How to split numbers in a string with a single SQL on 10.2?
Is it possible to to below action with a single SQL on 10.2?
input > '3abc4de5f'
output > '3,abc,4,de,5,f'
Thank you.It might be a NLS issue. Follow the suggestion of Karthick_Arp and use [[:alpha:]] instead:Is is
SQL> with t as (select 'a' l from dual union all
select 'b' l from dual union all
select 'A' l from dual)
select * from t
order by nlssort(l, 'NLS_SORT=GERMAN')
L
a
A
b
3 rows selected.
SQL> with t as (select 'a' l from dual union all
select 'b' l from dual union all
select 'A' l from dual)
select * from t
order by nlssort(l, 'NLS_SORT=DANISH')
L
A
a
b
3 rows selected.You could also do a case insensitive match (As in TXT3)
SQL> alter session set NLS_SORT=DANISH
Session altered.
SQL> with t as (select 'aADSFF3332abc4342de5Df' txt from dual
union all
select '3abc4de5f' from dual)
select txt, regexp_replace(txt, '([0-9]{1,}|[a-z]{1,})', '\1,') txt2
,regexp_replace(txt, '([0-9]{1,}|[a-z]{1,})', '\1,', 1, 0, 'i') txt3
from t
TXT TXT2 TXT3
aADSFF3332abc4342de5Df a,ADSFF,3332,abc,4342,de,5,Df, aADSFF,3332,abc,4342,de,5,Df,
3abc4de5f 3,abc,4,de,5,f, 3,abc,4,de,5,f,
2 rows selected.
SQL> alter session set NLS_SORT=GERMAN
Session altered.
SQL> with t as (select 'aADSFF3332abc4342de5Df' txt from dual
union all
select '3abc4de5f' from dual)
select txt, regexp_replace(txt, '([0-9]{1,}|[a-z]{1,})', '\1,') txt2
from t
TXT TXT2
aADSFF3332abc4342de5Df aADSFF,3332,abc,4342,de,5,Df,
3abc4de5f 3,abc,4,de,5,f,
2 rows selected.Regards
Peter -
How to handle large result set of a SQL query
Hi,
I have a question about how to handle large result set of a SQL query.
My query returns more than a million records. However, the Query Template has a "row count" parameter. If I don't specify it, it by default returns only 100 lines of records in the query result. If I specify it, then it's limited to a specific number.
Is there any way to get around of this row count issue? I don't want any restriction on the number of records returned by a query.
Thanks a lot!No human can manage that much data...in a grid, a chart, or a direct-connected link to the brain.
What you want to implement (much like other customers with similar requirements) is a drill-in and filtering model that helps the user identify and zoom in on data of relevance, not forcing them to scroll through thousands or millions of records.
You can also use a time-based paging model so that you only deal with a time "slice" at one request (e.g. an hour, day, etc...) and provide a scrolling window. This is commonly how large datasets are also dealt with in applications.
I would suggest describing your application in more detail, and we can offer design recommendations and ideas.
- Rick -
How to handle XML string with Single Quotes as a parameter to SP dynamically?
Hi,
I would like to know if there is a way to handle the Single Quotes in XML value when it is passed to Stored Procedure?
I should be able to handle it without adding another Single Quote to it.
Thanks,
Chandra ShekarHi Chandra,
Your requirement is not precise. Based on my understanding and guessing, are you metioning something like the below sample?
/*If the xml is generated you have no need to escape the singe quote(')*/
DECLARE @xmlTbl TABLE (ID INT,name VARCHAR(99));
INSERT INTO @xmlTbl VALUES(1,'Eric''s')
INSERT INTO @xmlTbl VALUES(2,'Zhang''s')
DECLARE @xmlDoc1 XML
SELECT @xmlDoc1
FROM @xmlTbl FOR XML PATH('PERSON'),ROOT('PERSONS')
EXEC yourProcedure @xmlDoc1
/*If your copy and paste the xml, you have to escape the single quote(') with 2s('')*/
DECLARE @xmlDoc2 XML
SET @xmlDoc2 = '<PERSONS>
<PERSON>
<ID>1</ID>
<name>Eric''s</name>
</PERSON>
<PERSON>
<ID>2</ID>
<name>Zhang''s</name>
</PERSON>
</PERSONS>'
EXEC yourProcedure @xmlDoc2
If that is not regarding your requirement, please elaborate with more details.
Eric Zhang
TechNet Community Support -
How to handle multiple reports with single hyperlink parameter
Please suggest in my drill down report
i have two reports linked with one hyperlink
parameter, how to handle this?
please suggest for popup window with sample solution.
for example
report A--->B--->Chosse Report c or D
based on parameter hyperlink at report B.
Thanks in advance
RajYes U R correct, that
I'm using srw.set_hyperlink in plsql format trigger
to open other reports , now the problem is
how to carry over the hyperlink parameter to popup window
and allow user to choose any reports based on the
parameter value.
for example
report A (Sales person summmary report)
|
| (choose sales person drilled to orders report B)
|
B (report has the hyperlink on order no)
|
|
C,D,E (many reports based on order no
customer,order details,pending items
to be shipped)
Now how to handle the situation from b to c,d,e
I suggest use hyperlink at B to open popup to show
reports C,D,E with the order no has parameter.
please suggest for javascript to open popup window
for reports c,d,e.
Thanks
Raj -
Dynamic Pivot with Select Into
I have this Dynamic Pivot which works fine.
DECLARE @query VARCHAR(4000)
DECLARE @years VARCHAR(2000)
SELECT @years = STUFF(( SELECT DISTINCT'],[' + [factor_label]
FROM [TEMP_lacp_factors]
ORDER BY '],[' + [factor_label]
FOR XML PATH('')
), 1, 2, '') + ']'
SET @query =
'SELECT * FROM
SELECT [date_],[issue_id],[cusip],[Factor_value],[factor_label]
FROM [TEMP_lacp_factors]
)t
PIVOT (MAX([factor_value]) FOR [factor_label]
IN ('+@years+')) AS pvt'
EXECUTE (@query)
I'm trying to take the results of that and do a SELECT INTO, so I can move the results to another table. Is this possible? I didn't find a whole lot online.
The error that I'm getting is this.
Caused by: Column name or number of supplied values does not match table definition.
How can I do this? Is it even possible?
Knowledge is the only thing that I can give you, and still retain, and we are both better off for it.Sure, you can create a table with SELECT INTO, but it cannot be a #temptable. Well, it can be a #temptable, but it will disappear as soon as you exit the scope it was created it, that is the dynamic SQL.
The question is only, what would you do with this table later? Since you don't know the column names, about all work will have to be done through dynamic SQL.
A dynamic pivot is a non-relational operation. A SELECT statement produces a table, and a table describes a distinct entity, of which the column are distinct and well-defined attributes. Something which your dynamic pivot does not adhere to.
There is only one thing you can do with your dynamic pivot: returning the data to the client. I don't know what you want to do with that table, but probably you should do that manipulation before the dynamic pivot, because as I said: that is always your
last step.
Erland Sommarskog, SQL Server MVP, [email protected] -
How to handle dynamic screens in bdc
HI SIR,
i am working on BDC for CA02 in this i have probelm that if operation 10 it doesnot contains any items it showing one screen and if operation 10 contain some items
and its item counter increasing automatically in this case it coming to this screen through some other screen.so.plz help me how to handle this dynamic screens in bdc ,plz help.hi sir,
now i am working BDC UPLOAD with tcode CA02 in this in second screen their are some rows like in table control
opt
10 x
20
30 x
like above in this if row one of column contains 'x' then if i want to fill sub item then it display i one screen EX 100 else if it dsplay screen 200(ie item 10 already contains subitems it display x in one row column(i.e selected check box) else it show unselected check box.plz tell how to know wheather check box is selected or not from screen to .plz tell.
thanking u -
How to replace double quotes with a single quote in a string ?
Hi All:
Can some one tell me how to replace double Quote (") in a string with a single quote (') ? I tried to use REPLACE function, but I couldn;t get it worked.
My example is SELECT REPLACE('STN. "A"', '"', ''') FROM Dual --This one throws an error
Thanks,
Dima.Whether it is maybe not the more comfortable way, I like the quoting capabitlity from 10g :
SQL> SELECT REPLACE('STN. "A"', '"', q'(')') FROM Dual;
REPLACE(
STN. 'A'{code}
Nicoals. -
How to create dynamic DataTable with dynamic header/column in JSF?
Hello everyone,
I am having problem of programmatically create multiple DataTables which have different number of column? In my JSF page, I should implement a navigation table and a data table. The navigation table displays the links of all tables in the database so that the data table will load the data when the user click any link in navigation table. I have gone through [BalusC's post|http://balusc.blogspot.com/2006/06/using-datatables.html#PopulateDynamicDatatable] and I found that the section "populate dynamic datatable" does show me some hints. In his code,
// Iterate over columns.
for (int i = 0; i < dynamicList.get(0).size(); i++) {
// Create <h:column>.
HtmlColumn column = new HtmlColumn();
dynamicDataTable.getChildren().add(column);
// Create <h:outputText value="dynamicHeaders"> for <f:facet name="header"> of column.
HtmlOutputText header = new HtmlOutputText();
header.setValue(dynamicHeaders[i]);
column.setHeader(header);
// Create <h:outputText value="#{dynamicItem[" + i + "]}"> for the body of column.
HtmlOutputText output = new HtmlOutputText();
output.setValueExpression("value",
createValueExpression("#{dynamicItem[" + i + "]}", String.class));
column.getChildren().add(output);
public HtmlPanelGroup getDynamicDataTableGroup() {
// This will be called once in the first RESTORE VIEW phase.
if (dynamicDataTableGroup == null) {
loadDynamicList(); // Preload dynamic list.
populateDynamicDataTable(); // Populate editable datatable.
return dynamicDataTableGroup;
I suppose the Getter method is only called once when the JSF page is loaded for the first time. By calling this Getter, columns are dynamically added to the table. However in my particular case, the dynamic list is not known until the user choose to view a table. That means I can not call loadDynamicList() in the Getter method. Subsequently, I can not execute the for loop in method "populateDynamicDataTable()".
So, how can I implement a real dynamic datatable with dynamic columns, or in other words, a dynamic table that can load data from different data tables (different number of columns) in the database at run-time?
Many thanks for any help in advance.flyeminent wrote:
However in my particular case, the dynamic list is not known until the user choose to view a table. Then move the call from the getter to the bean's action method. -
How to handle Dynamic Fiscal calendar
Hi FolksWe have designed our cubes in such a way that the time dimension is actually split into 2 time dimensions "Fiscal Year" and "Fiscal Time". The "Fiscal Time" changes every four years, in that, it has an extra week. So usually the Month February has 4 Weeks WK01, WK02, WK03, WK04, but this year it has an exta week WK05 and usually WK05 falls under March. So we are not sure how to handle this, other than combining the both dimensions, which has a huge impact on our historical data. And also we think the current design is more elegant, if we do not have this problem. Is there any way we can manage this with out comibing the both time dimensions.1. Fiscal Year FY01 FY02 FY032. FY Time Q1 AUG Q1 Wk01 Sep Oct Q2 Q3 Feb Q3 Wk01 Q3 Wk02 Q3 Wk03 Q3 Wk04
Hi Nilesh,
Views will be vary based on the Material Type what u are selectiing , so u have to focus on this settings.
Regards
Peram -
How to handle multiple clients with DatagramSocket
I am trying to handle multiple clients with 1 datagramSocket bind to one port (basically I have only one port to use, and I can not use TCP or any other ports). At the server side I have two threads one for receiving packets and buffering them, another for processing the packets in the buffer and sending replies.
I can have multiple clients sending datagramPackets to me and I will have to process the packets and send them to DIFFERENT clients. Ex. Client 1 sends datagramPacket to Server which sends the processed packet to Client 2. Also Client 2 sends a datagramPacket to Server which again processes the packet and sends it to Client1. May have Client 3 and 4 doing the same thing at the same time... and so on...
My root class is creating the datagramSocket(somePort) and two threads (receiver and sender). How can I use the socket that I created in these two threads??
I have done the following and I am getting "java.net.bindexception". When I am sending stuff from Client1 to Client2 everything is fine but when I start sending something from Client2 to Client 1, I get the bindexception... Client 1 is using port 3000, Client 2 is using port 4000.
I really don't have a lot of experience in socket programming so I am not sure if there is a much simpler way to do this. I appreciate all the tips and help that I can get...
Thanks...
class UDP_serv
static DatagramSocket udpSocket;
final static int SERVER_PORT = 2000;
public static void main(String[] args) throws SocketException
udpSocket= new DatagramSocket(SERVER_PORT);
new DataReceiver().start ();
new DataSender().start ();
static class DataReceiver extends Thread
DataReceiver()
Thread.currentThread().setName("DataReceiver");
public void run()
while (true)
byte pckt[] = new byte [MaxMsgSize];
DatagramPacket dp = new DatagramPacket (pckt, pckt.length);
try
udpSocket.receive (dp);
//PUSH TO RECEIVE BUFFER
catch(Exception e)
e.printStackTrace();
static class DataSender extends Thread
DataSender()
Thread.currentThread().setName("DataSender");
public void run()
while (true)
processDataMsg();
static void processDataMsg()
DatagramPacket op;
InetAddress DA = null;
int DP = 0;
byte [] outPacket = null;
// POP FROM RECEIVE BUFFER
// SOME PROCESSING HERE
// Set Destination Address (DA)
// Set Destination Port (DP)
// DA and DP are the forwarding IP and Port addresses
// not the addresses original packet was sent from.
try
op = new DatagramPacket (outPacket, outPacket.length,DA, DP);
udpSocket.send(op);
catch (IOException e)
e.printStackTrace();
}Also for development and testing purposes, I am running the two clients and the server on the same machine (windows xp-32b) so all of the Destination IP Addresses are 127.0.0.1. and as I said Ports that I am using are 2000, 3000, 4000 (Server, Client1, Client2).Hmm I have minimized the code and it seems to be working now.
I think I have an error in the header portion of the data I am sending, where I am storing the source IP/Port and destination IP/Port. I think the server in the middle is messing these values up while sending them to the destination Client. Because the destination client actually receives the stuff and sends the reply back to the server, but the reply packet's headers has 0/0 as the dest IP / Port...
Server is giving me java.net.BindException: Cannot assign requested address error when it tries to forward the reply it received from the client2 as the address it is trying to send is 0!
I guess it doesnt just give this error when you try to open two sockets to the same port...
Paul, Thanks for the direction on how to proceed... took me a while get the minimized code but at least figured out the problem. Well still have to make sure that is THE problem though :)
As far as the statics goes how can I change those to non static ones? Where do I make an instance of the top level class that creates the threads? and how do I pass the DatagramSocket to the threads/ if I dont need to pass how do I call or use the datagramSocket I created in the top level class? I mean do I still kinda have it like a global variable on the top?? A very simple example would be much appreciated...
I think these might be really basic questions but I am having a rough time with the hierarchy in java...
Maybe you are looking for
-
Column order in SQL Query (PL/SQL function returning a query)
Hi, when I define a PL/SQL function returning a query inside a region, I often find that the column order is arbitrarily changed. How do I enforce the column order ? Bye, Flavio
-
How do i upload my pictures from my iphone to my imac?
we got my sisters older imac and i would like to upload pictures from my iphone4 to it. help is much appreciated. thanks
-
My macbook pro's screen is a pixelated green and purple. How do I fix this?
It's very annoying and my computer is very new. I know I haven't intentionaly damaged it.
-
Issues with Facetime MacBook Pro os x 10.8.5
Hi my macbook pro is running os x 10.8.5 and i can't get my facetime or imessenger account to sign in with my apple ID any thoughts? I have done the apple ID check and my email address and password validates. I can also use my iTunes account as well.
-
WebDAV for iCal and Authorization header errors?
I have OS X 10.5.8 Server running Web services/WebDAV for hosting internal .ics files for iCal calendar publishing. Everything seems to be working fine but whenever a user opens iCal and their subscribed calendars refresh, I see the following errors